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

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

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

SELECT AVG(IF(b.date IS NULL, 0, 1)) avg_ret
FROM (SELECT DISTINCT device_id, date
    FROM question_practice_detail) a
LEFT JOIN (SELECT DISTINCT device_id, date
    FROM question_practice_detail) b
ON DATEDIFF(b.date,a.date) = 1
AND a.device_id = b.device_id;

用AVG(IF())的形式计算平均值,自连接以筛选连续两天答题的人,左连接是为了计算分母。

一开始使用原表自连接,计算结果为0.45,发现这样会重复计算连续两日答题且单日答了复数道题的人,因此把两张表改成两个子查询,先选出去重的人、日期数据,再进行计算。

全部评论

相关推荐

10-22 20:17
已编辑
门头沟学院 Python
敢逐云霄志:后端没92学历+大厂实习基本别想在秋招约面了,笔试可能都不会给你发,我双非本3段实习,一大,中,一小,中大厂笔试做了一堆,大厂就只有字节给面,其他全没动静,根本轮不到双非。
你觉得第一学历对求职有影...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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