题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
结果
select avg(if (datediff(date2, date1) = 1, 1, 0)) as avg_ret from ( select distinct device_id, date as date1, lead (date) over ( partition by device_id order by date ) as date2 from ( select distinct device_id, date from question_practice_detail ) as uniq_id_date ) as id_last_next_date
过程
一步一步来 某天刷题后 第二天还来的平均概率
(1) 先去重 去掉某天登录多次的用户
select distinct device_id,date from question_practice_detail
(2)使用lead窗口函数 找出当前device_id分组中 每个日期dat1的下个日期 作为date2
(3)比较date2和date1之间相差天数 如果为1则表示第二天又来了 计算平均概率