已知用户登录日志表user_login_log
user_id | event_time |
1 | 2022-01-01 12:10:00 |
2 | 2022-01-11 22:10:00 |
3 | 2022-01-21 21:20:01 |
...... | ........ |
求:此应用的次日、3日、7日、14日、30日、90日留存率
思路解析:
1、先按照日期、用户去重
2、再做子关联,关联条件为:user_id相同,时间做差
3、再分别去重计算,计算对应的留存率即可
代码:
SELECT
log_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日留存',
count(user_id_d30) / count(user_id_d0) '30日留存',
count(user_id_d90) / count(user_id_d0) '90日留存'
FROM
(
SELECT DISTINCT
log_day,
a.user_id_d0,
b.us