SQL实现次日、三日及七日用户留存率的计算
本篇博客学习如何用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实现次日、三日及七日用户留存率的计算相关推荐
- hive 关于用户留存率的计算
最近接到一个需求,需要统计用户留存率,而且要一次统计多个模块,多个日期的留存率,那如何通过一段hive(SQL)来实现该需求呢,在网上看到一篇很精妙的文章,参考这篇文章实现了需求,可以说是目前见过的一 ...
- sql计算留存_SQL基础第七讲:关于用户留存率的计算
最近,好几个小伙伴都拿着关于用户留存的面试题来问我,所以今天单独开一篇文章讲一下留存问题. 首先看一下留存是什么,简单来说,我和你今天在一家超市购物了,明天我来购物了,你没来,那么我就是这个超市的留存 ...
- 用户留存率问题计算详解
数据分析工作中经常会遇到计算用户留存的相关问题,例如我们现在遇到这样一个场景, 某APP, 它的新增用户的次日留存.7日留存.30日留存为60%.30%.15%, 请模拟出来,每天如果日新增5万用户, ...
- 计算用户的平均次日、三日和七日留存率
首先弄清楚用户平均次日.三日和七日留存率的概念 用户平均次日留存率:第一天登录了,第二天也登录的用户 用户平均三日留存率:第一天登录了,第三天也登录的用户(不需要三天连续登录,只需要在第一天和第三天都 ...
- 【SQL屠夫系列】- 高频面试之SQL计算用户留存率
文章目录 指标背景 指标计算 真题 思路 开撸 拓展 在如今的程序员面试过程中,考察SQL部分能力,虽不是难点,但几乎是必考. 为检查思路盲点,避免翻船,各位看官也可以复盘下,如对你有一丝的帮助,欢迎 ...
- 用SQL进行用户留存率计算
今天我们来分享一个常见案例,用SQL来计算用户留存率. 目录: 1. 案例数据 2. 思路分析 3. 完整代码 1. 案例数据 这里我们一共两份日志数据,分别是用户账号创建的日志以及用户登录的日志. ...
- Hive 计算用户留存率(次日,3日,N日)
文章目录 什么是用户留存率? 创建数据源 计算留存率 计算 N 日的留存率 什么是用户留存率? 用户留存率是指在特定时间段内,用户在使用某个产品或应用程序后,再次使用该产品或应用程序的比例. 它可以帮 ...
- 位运算实现用户留存率
统计留存率之前先弄清一下留存率的概念,百度百科中是这么说的: 用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存: 这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位 ...
- mysql 留存率_mysql查询用户留存语法(用户留存和用户留存率问题)
1.创建表 CREATE TABLE `user_log` ( `device_id` varchar(11) CHARACTER SET latin1 COLLATE latin1_swedish_ ...
- redis实现用户签到,统计活跃用户,用户在线状态,用户留存率
开发的过程中,可能会遇到用户签到.统计当天的活跃用户.以及每个用户的在线状态,用户留存率的开发需求,可能会用传统的方法,根据相应的需求设计数据库表等,但这样耗费的存储空间大,以及性能方面也不会太好,下 ...
最新文章
- 顺序表-顺序表的基本操作(初始化+指定位置元素值 + 用元素值求下标)
- JQuery:JQuery捕获HTML
- c语言会一点然后学java_学C语言自己写的一个程序
- CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件
- linux 依赖关系解析失败,关于linux依赖关系出错的解决
- 视频 | 为何我对小鹏NGP“半信半疑”
- 从实验室搬到宿舍后可以上QQ但打不开网页
- sql server的标识种子列
- 数学建模国赛 2020B-穿越沙漠 第一关 Lingo 和 C语言 动态规划求解
- SketchUp草图大师制作分析图的详细流程介绍
- 微信小程序选项卡切换
- 嵌入式开发培训怎么样?嵌入式开发培训多少钱
- java stringbuilder 构造函数_java中stringBuilder的用法详解
- vue.js 的学习
- vim编辑修改二进制文件以及对于二进制文件中幻数测试
- 打包aab,从AAB文件生成Apk文件(Android应用程序捆绑包)
- vmware中无法检测网卡的解决办法
- ubuntu安装Qt creator
- 解决WIN7开机点登陆后黑屏很长时间才会进系统,打黑屏补丁无效问题
- html背景和框如何居中显示图片,巧用background属性实现图片居中
热门文章
- 面试题:赛马最快N匹
- 【算法竞赛学习笔记】平衡树专题——替罪羊树
- 字节跳动实习生转正工资_日常实习 | 字节跳动西瓜视频招募运营实习生啦!
- 俄亥俄大学计算机科学专业,俄亥俄州立大学计算机科学专业研究生申请条件
- 用pinyin4j获取汉语拼音并首字母大写
- P3717 [AHOI2017初中组]cover——洛谷(差分)
- VS SP6补丁安装失败解决方法(Visual Studio 6.0 Service Pack 6 Setup was not completed successfully.)
- GDC演讲翻译——看门狗2的载具同步
- 【线代】相似矩阵中特征根的求法:特征方程、一般方程为什么求得的特征根含义不同?
- 微软苏州校招1月3日在线编程题2——Disk Storage