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

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

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

全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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