【SQL】运营数据计算(DAU、留存)
运营数据计算(DAU、留存)
- 1 计算DAU日活
- 2 计算留存率:次日留存
1 计算DAU日活
创建订单表
create table SC (id varchar(10),uid varchar(10),dt datetime(10));
insert into SC values ('01' , '466' , '2017-01-07 18:24:55');
insert into SC values ('02' , '458' , '2017-01-07 18:25:18');
insert into SC values ('03' , '458' , '2017-01-07 18:26:21');
insert into SC values ('04' , '592' , '2017-01-07 19:09:59');
insert into SC values ('05' , '393' , '2017-01-08 00:41:19');
insert into SC values ('06' , '592' , '2017-01-08 09:14:27');
insert into SC values ('07' , '592' , '2017-01-08 11:18:08');
insert into SC values ('08' , '636' , '2017-01-08 11:27:24');
insert into SC values ('09' , '458' , '2017-01-09 11:13:12');
insert into SC values ('10' , '458' , '2017-01-09 11:34:02');
insert into SC values ('11' , '413' , '2017-01-09 12:29:25');
insert into SC values ('12' , '413' , '2017-01-09 12:40:39');
insert into SC values ('13' , '393' , '2017-01-09 16:22:48');
insert into SC values ('14' , '592' , '2017-01-09 16:31:07');
insert into SC values ('15' , '592' , '2017-01-10 10:55:06');
insert into SC values ('16' , '458' , '2017-01-10 12:14:11');
insert into SC values ('17' , '458' , '2017-01-10 12:33:53');
insert into SC values ('18' , '462' , '2017-01-10 12:34:59');
insert into SC values ('19' , '413' , '2017-01-10 15:22:45');
insert into SC values ('20' , '466' , '2017-01-10 19:12:47');
Output:
id | uid | dt |
---|---|---|
01 | 466 | 2017-01-07 18:24:55 |
02 | 458 | 2017-01-07 18:25:18 |
03 | 458 | 2017-01-07 18:26:21 |
04 | 592 | 2017-01-07 19:09:59 |
05 | 393 | 2017-01-08 00:41:19 |
06 | 592 | 2017-01-08 09:14:27 |
07 | 592 | 2017-01-08 11:18:08 |
08 | 636 | 2017-01-08 11:27:24 |
09 | 458 | 2017-01-09 11:13:12 |
10 | 458 | 2017-01-09 11:34:02 |
11 | 413 | 2017-01-09 12:29:25 |
12 | 413 | 2017-01-09 12:40:39 |
13 | 393 | 2017-01-09 16:22:48 |
14 | 592 | 2017-01-09 16:31:07 |
15 | 592 | 2017-01-10 10:55:06 |
16 | 458 | 2017-01-10 12:14:11 |
17 | 458 | 2017-01-10 12:33:53 |
18 | 462 | 2017-01-10 12:34:59 |
19 | 413 | 2017-01-10 15:22:45 |
20 | 466 | 2017-01-10 19:12:47 |
计算DAU
原则:按日分组,统计每日不重复客户数量
select substr(dt, 1, 10) as dtt, count(distinct uid ) as DAU from SC group by substr(dt, 1, 10);
Output:
dtt | DAU |
---|---|
2017-01-07 | 3 |
2017-01-08 | 3 |
2017-01-09 | 4 |
2017-01-10 | 5 |
2 计算留存率:次日留存
• 用表合并的方式构造一阶滞后的new col,然后用new col除以old col得到比率
• 通过构造一阶滞后的new column,巧妙地避免了循环
select substr(a.dt, 1,10) as ddt,count(distinct a.uid) as DAU, --当日活跃用户数Acount(distinct b.uid) as nextday_ret, --次日留存用户数B(count(distinct b.uid) * 100 / count(distinct a.uid)) || '%' as one_day_ret --次日留存率=B/Afrom SC aleft joinSC bon a.uid = b.uid and substr(b.dt,9,2)-substr(a.dt,9,2) = 1 --条件:滞后一天合并group by substr(a.dt, 1,10) ;
Output:
ddt | DAU | nextday_ret | one_day_ret |
---|---|---|---|
2017-01-07 | 3 | 1 | 33% |
2017-01-08 | 3 | 2 | 66% |
2017-01-09 | 4 | 3 | 75% |
2017-01-10 | 4 | 0 | 0% |
注意1:最后一天的存留率无法知道
注意2:条件语句
substr(b.dt,9,2)-substr(a.dt,9,2) = 1
可以替换为
date_add(substr(a.ts, 1, 10), INTERVAL 1 day) = substr(b.ts, 1, 10)
参考
https://cloud.tencent.com/developer/article/1587655
【SQL】运营数据计算(DAU、留存)相关推荐
- 游戏日常运营数据:DAU分解及留存
(一)游戏日常运营数据:DAU分解及留存 附代码 斜体样式对于游戏内一般会建立每日用户信息整合日志ods_p1_day(一般基于当日玩家登录登出消费三个基础日志进行整合操作),以及对于历史用户整合日志 ...
- 游戏运营数据中DAU的解析
转载于http://www.gamedatas.com/archives/151 作为一个网游的从业人员,随时随地打开电脑的第一反应便是关注自己游戏项目的日活跃用户,新用户,收入情况.本文结合了一些博 ...
- 2021_lg_03.SQL实战:如何用sql计算用户留存问题
如何用sql计算用户留存问题 一.留存 1 .留存的含义: 留存:指基准日到APP的用户在之后的n日当天返回APP的人数: 留存率 = 基准日之后的n天当日返回的用户数 / 基准日的用户数 * 100 ...
- 数据蒋堂 | 大数据计算语法的SQL化
作者:蒋步星 来源:数据蒋堂 本文共1602字,建议阅读5分钟. 通过本文为大家解读为什么现在SQL变成了当前大数据计算语法的一个发展倾向. 回归SQL是当前大数据计算语法的一个发展倾向.在Hadoo ...
- 产品经理 : 最全的运营数据指标解读
业务是一个复杂体系,数据分析也从来不简单,两者结合都是充满挑战的.作者总结了一份全面的运营数据指标,希望给大家的工作带来帮助与启发. 运营和数据分析脱离不开关系.业务的洞悉决定了数据分析结果的上限,数 ...
- 游戏运营数据基本知识
11111111111111111111111 活跃用户指的是什么?ARPU怎么算?如何计算LTV? 这个付费渗透率是个啥玩意怎么算?那个3日留存里的3日指的是第三天,还是3天之后?做运营的你是不是也 ...
- 游戏运营数据解读之----ARPU[国外称之为ARPPU]
原文地址为: 游戏运营数据解读之----ARPU[国外称之为ARPPU] 为了严谨,今天把ARPU的定义和国外的ARPPU统一起来,本文中后续涉及到的ARPU叫法代表了ARPPU. 在很多国内外的游戏 ...
- 利用Excel计算DAU、商品转化率和ARPU值等
这个小练习是根据某公众号发布的内容,自己再进行整理的,觉得非常不错,所以拿来练练手. Excel记录了某款电商产品在1月1日发布,1个月后的新增及留存数据.商品销售数据.商品详情页浏览数据.及 ...
- 大数据计算框架期末复习
1. 下面哪个不是Linux发行版本 (D) A. Ubuntu B. Centos C. RedHat Enterprise Linux D. Mac 6.web方式查看hdfs目录结构 ...
最新文章
- FIR.im Weekly - 上周微博热转资源精选
- linux shell expect 处理 passwd 交互
- C#-Socket(TCP)
- CentOS Linux搭建SVN服务器
- ACE中的Proactor和Reactor
- 什么是JavaConfig
- 交换机的质量害死人呀!
- Antd Upload 和 Antd Form 结合的踩坑记录
- Log_Analysis_using_OSSEC.md
- python 官方中文文档百度云_python中文官方手册等手册链接地址
- 戴尔linux恢复镜像,如何从官网下载并使用系统恢复映像
- C语言———指针(1.3间接寻址运算符)
- 说说知名软件的伪装和防范(下)
- 【HDFS】HDFS文件块大小(重点)
- 阿里巴巴矢量图标库全选
- Clickhouse 各种工具函数知识 -<日期函数>
- 《风之大冒险》3.18上线链游玩家|超高颜值、卡牌放置
- 加解密遇到的JCE cannot authenticate the provider BC问题解决方案
- BoredApeYachtClub 无聊猿-NFT 源码解析第一节
- 如何使用python编程抢京东优惠券 知乎_小猿圈Python之实现京东秒杀功能代码
热门文章
- 硬核!IBM对「神经网络鲁棒性」的理论分析
- C++与Java比较(转)
- css 压缩后出现了问题,yuicompressor 压缩css问题怎么解决?—详细步骤
- 艺龙java面试题_艺龙2018秋招Java笔试题
- 懒人精灵手游内存技术分析
- “检索COM类工厂中CLSID为{...}的组件失败,原因是出现以下错误:8007007e...”的解决办法
- 论文阅读-Learning Deep CNN Denoiser Prior for Image Restoration
- 联想台式机进入BIOS系统,设置u盘启动
- Java应用级产品开发平台APDPlat作者杨尚川专访
- 十六、FileInputFormat介绍,切片源码分析