运营数据计算(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、留存)相关推荐

  1. 游戏日常运营数据:DAU分解及留存

    (一)游戏日常运营数据:DAU分解及留存 附代码 斜体样式对于游戏内一般会建立每日用户信息整合日志ods_p1_day(一般基于当日玩家登录登出消费三个基础日志进行整合操作),以及对于历史用户整合日志 ...

  2. 游戏运营数据中DAU的解析

    转载于http://www.gamedatas.com/archives/151 作为一个网游的从业人员,随时随地打开电脑的第一反应便是关注自己游戏项目的日活跃用户,新用户,收入情况.本文结合了一些博 ...

  3. 2021_lg_03.SQL实战:如何用sql计算用户留存问题

    如何用sql计算用户留存问题 一.留存 1 .留存的含义: 留存:指基准日到APP的用户在之后的n日当天返回APP的人数: 留存率 = 基准日之后的n天当日返回的用户数 / 基准日的用户数 * 100 ...

  4. 数据蒋堂 | 大数据计算语法的SQL化

    作者:蒋步星 来源:数据蒋堂 本文共1602字,建议阅读5分钟. 通过本文为大家解读为什么现在SQL变成了当前大数据计算语法的一个发展倾向. 回归SQL是当前大数据计算语法的一个发展倾向.在Hadoo ...

  5. 产品经理 : 最全的运营数据指标解读

    业务是一个复杂体系,数据分析也从来不简单,两者结合都是充满挑战的.作者总结了一份全面的运营数据指标,希望给大家的工作带来帮助与启发. 运营和数据分析脱离不开关系.业务的洞悉决定了数据分析结果的上限,数 ...

  6. 游戏运营数据基本知识

    11111111111111111111111 活跃用户指的是什么?ARPU怎么算?如何计算LTV? 这个付费渗透率是个啥玩意怎么算?那个3日留存里的3日指的是第三天,还是3天之后?做运营的你是不是也 ...

  7. 游戏运营数据解读之----ARPU[国外称之为ARPPU]

    原文地址为: 游戏运营数据解读之----ARPU[国外称之为ARPPU] 为了严谨,今天把ARPU的定义和国外的ARPPU统一起来,本文中后续涉及到的ARPU叫法代表了ARPPU. 在很多国内外的游戏 ...

  8. 利用Excel计算DAU、商品转化率和ARPU值等

      这个小练习是根据某公众号发布的内容,自己再进行整理的,觉得非常不错,所以拿来练练手.   Excel记录了某款电商产品在1月1日发布,1个月后的新增及留存数据.商品销售数据.商品详情页浏览数据.及 ...

  9. 大数据计算框架期末复习

    1.  下面哪个不是Linux发行版本  (D) A. Ubuntu B. Centos C. RedHat Enterprise Linux     D. Mac 6.web方式查看hdfs目录结构 ...

最新文章

  1. FIR.im Weekly - 上周微博热转资源精选
  2. linux shell expect 处理 passwd 交互
  3. C#-Socket(TCP)
  4. CentOS Linux搭建SVN服务器
  5. ACE中的Proactor和Reactor
  6. 什么是JavaConfig
  7. 交换机的质量害死人呀!
  8. Antd Upload 和 Antd Form 结合的踩坑记录
  9. Log_Analysis_using_OSSEC.md
  10. python 官方中文文档百度云_python中文官方手册等手册链接地址
  11. 戴尔linux恢复镜像,如何从官网下载并使用系统恢复映像
  12. C语言———指针(1.3间接寻址运算符)
  13. 说说知名软件的伪装和防范(下)
  14. 【HDFS】HDFS文件块大小(重点)
  15. 阿里巴巴矢量图标库全选
  16. Clickhouse 各种工具函数知识 -<日期函数>
  17. 《风之大冒险》3.18上线链游玩家|超高颜值、卡牌放置
  18. 加解密遇到的JCE cannot authenticate the provider BC问题解决方案
  19. BoredApeYachtClub 无聊猿-NFT 源码解析第一节
  20. 如何使用python编程抢京东优惠券 知乎_小猿圈Python之实现京东秒杀功能代码

热门文章

  1. 硬核!IBM对「神经网络鲁棒性」的理论分析
  2. C++与Java比较(转)
  3. css 压缩后出现了问题,yuicompressor 压缩css问题怎么解决?—详细步骤
  4. 艺龙java面试题_艺龙2018秋招Java笔试题
  5. 懒人精灵手游内存技术分析
  6. “检索COM类工厂中CLSID为{...}的组件失败,原因是出现以下错误:8007007e...”的解决办法
  7. 论文阅读-Learning Deep CNN Denoiser Prior for Image Restoration
  8. 联想台式机进入BIOS系统,设置u盘启动
  9. Java应用级产品开发平台APDPlat作者杨尚川专访
  10. 十六、FileInputFormat介绍,切片源码分析