题解 | 计算用户的平均次日留存率

计算用户的平均次日留存率

https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453

- 将去重后的用户,刷过题的日期构建一个临时表
with daily_practice as (
     select distinct device_id, date
     from question_practice_detail
)
- 使用自联结,对于每个用户,第一天刷题与第二天刷题匹配(两次匹配)
- 左表是所有用户刷过题的天数,如果第二天刷过题,匹配后q2.date列显示为第二天的日期,没刷题则显示为null
- 对左表和右表的date列计数,用后者除以前者即为整体的留存率
select count(q2.date) / count(q1.date) as avg_ret
from daily_practice as q1
     left join daily_practice q2 on q1.device_id = q2.device_id and q2.date = q1.date + interval 1 day;
 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务