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

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

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

# 解法1
#使用select 函数筛选出日期非空的数据,if(条件,值1,值2)
# select avg(if(b.device_id is not null,1,0)) avg_ret
# from (
#     select distinct device_id, date
#     from question_practice_detail 
# )a
# left join (
#     select  distinct device_id,date_sub(date,interval 1 day)date
#     from question_practice_detail
# )b
# on a.device_id = b.device_id and a.date = b.date
#解法2,先左连接得出第一天回答但是第二天未回答的人数,之后在b表重进行筛选出第二天也回答的人
select count(distinct b.device_id,b.date)/count(distinct a.device_id,a.date) as avg_ret
from question_practice_detail a left JOIN question_practice_detail b
on a.date = b.date-1 and a.device_id = b.device_id

全部评论

相关推荐

03-24 21:23
已编辑
郑州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务