当前位置:网站首页>SQL必会题之留存率
SQL必会题之留存率
2022-07-01 05:45:00 【Begin to change】
目录
一、题目
查询每天新增用户数以及他们次日留存率和三十日留存率
二、步骤
1、先求出每个用户最早的登录日期(辅助列)
SELECT user_id,login_date,MIN(login_date) over (PARTITION by user_id ORDER BY login_date ) as first_login from tb_user_login;2、连表
将有辅助列的表与原表进行关联,关联的条件不仅为id相等,还有一个条件就是其登录的时间与最早的登录时间的差值
SELECT user_id,login_date,MIN(login_date) over (PARTITION by user_id ORDER BY login_date ) as first_login from tb_user_login)t1
LEFT JOIN tb_user_login as t2
on t1.user_id = t2.user_id and DATEDIFF(t2.login_date,first_login)=1
left JOIN tb_user_login as t3
on t1.user_id = t3.user_id and DATEDIFF(t3.login_date,first_login)=29
GROUP BY first_login,uesr_id;3、统计
COUNT(DISTINCT t1.user_id) as 新增用户数,
COUNT(DISTINCT t2.user_id) /COUNT(DISTINCT t1.user_id) as 次日留存,
COUNT(DISTINCT t3.user_id) /COUNT(DISTINCT t1.user_id) as 三十日留存 4、源码
SELECT user_id,login_date,MIN(login_date) over (PARTITION by user_id ORDER BY login_date ) as first_login from tb_user_login;
# 查看每个用户登录的日期
SELECT
first_login,
COUNT(DISTINCT t1.user_id) as 新增用户数,
COUNT(DISTINCT t2.user_id) /COUNT(DISTINCT t1.user_id) as 次日留存,
COUNT(DISTINCT t3.user_id) /COUNT(DISTINCT t1.user_id) as 三十日留存
from (SELECT user_id,login_date,MIN(login_date) over (PARTITION by user_id ORDER BY login_date ) as first_login from tb_user_login)t1
LEFT JOIN tb_user_login as t2
on t1.user_id = t2.user_id and DATEDIFF(t2.login_date,first_login)=1
left JOIN tb_user_login as t3
on t1.user_id = t3.user_id and DATEDIFF(t3.login_date,first_login)=29
GROUP BY first_login;边栏推荐
猜你喜欢
随机推荐
论文学习记录随笔 多标签之GLOCAL
Speed regulation and stroke control based on Ti drv8424 driving stepper motor
Call us special providers of personal cloud services for College Students
Mongodb learning chapter: introduction after installation lesson 1
Data governance: metadata management implementation (Part IV)
Chapitre d'apprentissage mongodb: Introduction à la première leçon après l'installation
Orcle创建用户+角色
libpng12.so.0: cannot open shared object file: No such file or directory 亲测有效
JDBC常见面试题
el-table 动态表头渲染 固定第一列 高度问题
win10、win11中Elan触摸板滚动方向反转、启动“双指点击打开右键菜单“、“双指滚动“
Code shoe set - mt3149 · and - the data is not very strong. Violent pruning can deceive AC
移动端常用解决方案
[SRS] use of Vhost isolated stream: push / pull Stream Address
Fiber Bragg grating (FBG) notes [1]: waveguide structure and Bragg wavelength derivation
葫芦儿 APP 使用帮助
SSM的教务管理系统(免费源码获取)
Qt编译时,出现 first defined here,原因及解决方法
json数据比较器
Build 2022 上开发者最应关注的七大方向主要技术更新









