题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
-- 开窗函数解法 与连续登录思路大致
select
-- 求出连续俩天作答的人数
count(device_id) / (
-- 求出总作答人数,要去重
select
count(distinct device_id, date)
from
question_practice_detail
) as avg_ret
from
(
select
device_id,
date,
-- 用 开窗函数 对date 开窗 求出连续日期
lead (date, 1, '9999-12-01') over (
partition by
device_id
order by
date asc
) next_day
from
( -- 对同一设备同一日期冲服的数据去重
select distinct
device_id,
date
from
question_practice_detail
) t1
) t2
where
datediff (next_day, date) = 1 -- 下一行 与 当前行 日期相差为 1 即为连续俩天登录

