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

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

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

SELECT
    ROUND(
        SUM(CASE WHEN p2.date IS NOT NULL THEN 1 ELSE 0 END) / COUNT(*),
        4
    ) AS avg_ret
# 得到当天刷题的人统计表(去除同一天多次刷题) 这里涉及到子查询,自连接左连接还有DATE_ADD日期增减函数的知识,
FROM 
    (SELECT DISTINCT device_id, date FROM question_practice_detail) p1
# 左连接,确保每个人当天刷题的日期都在,加上下一天的日期数据,没有的为NULL,
LEFT JOIN 
    (SELECT DISTINCT device_id, date FROM question_practice_detail) p2
    ON p1.device_id = p2.device_id
    AND p2.date = DATE_ADD(p1.date, INTERVAL 1 DAY)


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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