本篇博客学习如何用SQL来实现次日、三日及七日留存率的计算。

假设有一个表 role_login_back,有字段:event_time表示登陆日期时间和device_id表示设备ID。

event_time device_id
2020-01-01 12:40:44 cB789hj888888

现在要计算用户的次日留存率、三日留存率、七日留存率等。在计算之前,我们先来弄清楚这些留存的定义。

  • 次日留存:即当日登录后,第二天也登录的用户,称为次日留存用户。
  • 三日留存:即当日登录后,第三天也登录的用户,称为三日留存用户。
  • 七日留存:即当日登录后,第七天也登录的用户,称为七日留存用户。

代码如下:

① 将device_id分组,每个device_id按照时间进行排序。

select distinct date(event_time) as log_day, # 只关心日期,不关注具体的时间。device_id as user_id_d0
from role_login_back
group by device_id
order by log_day; a

② 取出次日、第三天以及第7天登录的设备id。

select distinct log_day,a.user_id_d0,b.device_id as user_id_d1,c.device_id as user_id_d3,d.device_id as user_id_d7
from a
left join role_login_back b
on datediff(date(b.event_time),a.log_day) = 1
and a.user_id_d0 = b.device_id
left join role_login_back c
on datediff(date(c.event_time), a.log_day) = 2
and a.user_id_d0 = c.device_id
left join role_login_back d
on datediff(date(d.event_time), a.log_day) = 6
and a.user_id_d0 = d.device_id; temp

③ 计算次日、三日及七日留存率。

selectlog_day '日期',count(user_id_d0) '新增数量',count(user_id_d1) / count(user_id_d0) '次日留存率',count(user_id_d3) / count(user_id_d0) '3日留存率',count(user_id_d7) / count(user_id_d0) '7日留存率',
from temp
group by log_day;

综合代码:

selectlog_day '日期',count(user_id_d0) '新增数量',count(user_id_d1) / count(user_id_d0) '次日留存率',count(user_id_d3) / count(user_id_d0) '3日留存率',count(user_id_d7) / count(user_id_d0) '7日留存率',
from (select distinct log_day,a.user_id_d0,b.device_id as user_id_d1,c.device_id as user_id_d3,d.device_id as user_id_d7from (select distinct date(event_time) as log_day, # 只关心日期,不关注具体的时间。device_id as user_id_d0from role_login_backgroup by device_idorder by log_day) aleft join role_login_back b on datediff(date(b.event_time),a.log_day) = 1 and a.user_id_d0 = b.device_idleft join role_login_back c on datediff(date(c.event_time), a.log_day) = 2and a.user_id_d0 = c.device_idleft join role_login_back don datediff(date(d.event_time), a.log_day) = 6and a.user_id_d0 = d.device_id )
group by log_day;

SQL实现次日、三日及七日用户留存率的计算相关推荐

  1. hive 关于用户留存率的计算

    最近接到一个需求,需要统计用户留存率,而且要一次统计多个模块,多个日期的留存率,那如何通过一段hive(SQL)来实现该需求呢,在网上看到一篇很精妙的文章,参考这篇文章实现了需求,可以说是目前见过的一 ...

  2. sql计算留存_SQL基础第七讲:关于用户留存率的计算

    最近,好几个小伙伴都拿着关于用户留存的面试题来问我,所以今天单独开一篇文章讲一下留存问题. 首先看一下留存是什么,简单来说,我和你今天在一家超市购物了,明天我来购物了,你没来,那么我就是这个超市的留存 ...

  3. 用户留存率问题计算详解

    数据分析工作中经常会遇到计算用户留存的相关问题,例如我们现在遇到这样一个场景, 某APP, 它的新增用户的次日留存.7日留存.30日留存为60%.30%.15%, 请模拟出来,每天如果日新增5万用户, ...

  4. 计算用户的平均次日、三日和七日留存率

    首先弄清楚用户平均次日.三日和七日留存率的概念 用户平均次日留存率:第一天登录了,第二天也登录的用户 用户平均三日留存率:第一天登录了,第三天也登录的用户(不需要三天连续登录,只需要在第一天和第三天都 ...

  5. 【SQL屠夫系列】- 高频面试之SQL计算用户留存率

    文章目录 指标背景 指标计算 真题 思路 开撸 拓展 在如今的程序员面试过程中,考察SQL部分能力,虽不是难点,但几乎是必考. 为检查思路盲点,避免翻船,各位看官也可以复盘下,如对你有一丝的帮助,欢迎 ...

  6. 用SQL进行用户留存率计算

    今天我们来分享一个常见案例,用SQL来计算用户留存率. 目录: 1. 案例数据 2. 思路分析 3. 完整代码 1. 案例数据 这里我们一共两份日志数据,分别是用户账号创建的日志以及用户登录的日志. ...

  7. Hive 计算用户留存率(次日,3日,N日)

    文章目录 什么是用户留存率? 创建数据源 计算留存率 计算 N 日的留存率 什么是用户留存率? 用户留存率是指在特定时间段内,用户在使用某个产品或应用程序后,再次使用该产品或应用程序的比例. 它可以帮 ...

  8. 位运算实现用户留存率

    统计留存率之前先弄清一下留存率的概念,百度百科中是这么说的: 用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存: 这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位 ...

  9. mysql 留存率_mysql查询用户留存语法(用户留存和用户留存率问题)

    1.创建表 CREATE TABLE `user_log` ( `device_id` varchar(11) CHARACTER SET latin1 COLLATE latin1_swedish_ ...

  10. redis实现用户签到,统计活跃用户,用户在线状态,用户留存率

    开发的过程中,可能会遇到用户签到.统计当天的活跃用户.以及每个用户的在线状态,用户留存率的开发需求,可能会用传统的方法,根据相应的需求设计数据库表等,但这样耗费的存储空间大,以及性能方面也不会太好,下 ...

最新文章

  1. 顺序表-顺序表的基本操作(初始化+指定位置元素值 + 用元素值求下标)
  2. JQuery:JQuery捕获HTML
  3. c语言会一点然后学java_学C语言自己写的一个程序
  4. CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件
  5. linux 依赖关系解析失败,关于linux依赖关系出错的解决
  6. 视频 | 为何我对小鹏NGP“半信半疑”
  7. 从实验室搬到宿舍后可以上QQ但打不开网页
  8. sql server的标识种子列
  9. 数学建模国赛 2020B-穿越沙漠 第一关 Lingo 和 C语言 动态规划求解
  10. SketchUp草图大师制作分析图的详细流程介绍
  11. 微信小程序选项卡切换
  12. 嵌入式开发培训怎么样?嵌入式开发培训多少钱
  13. java stringbuilder 构造函数_java中stringBuilder的用法详解
  14. vue.js 的学习
  15. vim编辑修改二进制文件以及对于二进制文件中幻数测试
  16. 打包aab,从AAB文件生成Apk文件(Android应用程序捆绑包)
  17. vmware中无法检测网卡的解决办法
  18. ubuntu安装Qt creator
  19. 解决WIN7开机点登陆后黑屏很长时间才会进系统,打黑屏补丁无效问题
  20. html背景和框如何居中显示图片,巧用background属性实现图片居中

热门文章

  1. 面试题:赛马最快N匹
  2. 【算法竞赛学习笔记】平衡树专题——替罪羊树
  3. 字节跳动实习生转正工资_日常实习 | 字节跳动西瓜视频招募运营实习生啦!
  4. 俄亥俄大学计算机科学专业,俄亥俄州立大学计算机科学专业研究生申请条件
  5. 用pinyin4j获取汉语拼音并首字母大写
  6. P3717 [AHOI2017初中组]cover——洛谷(差分)
  7. VS SP6补丁安装失败解决方法(Visual Studio 6.0 Service Pack 6 Setup was not completed successfully.)
  8. GDC演讲翻译——看门狗2的载具同步
  9. 【线代】相似矩阵中特征根的求法:特征方程、一般方程为什么求得的特征根含义不同?
  10. 微软苏州校招1月3日在线编程题2——Disk Storage