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

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

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

WITH t1 AS (
    -- 从问卷练习表单中提取不重复的设备 ID 和日期,作为第一天的数据
    SELECT DISTINCT device_id, date
    FROM question_practice_detail
),
t2 AS (
    -- 从问卷练习表单中提取不重复的设备 ID 和日期,作为第二天的数据
    SELECT DISTINCT device_id, date
    FROM question_practice_detail
) 

SELECT coalesce(count(distinct t2.device_id,t2.date)/count(distinct t1.device_id,t1.date),0) AS retention_rate
-- 计算次日留存率,如果分母为 0 则返回 0
FROM t1
-- 以 t1 表为基础进行左连接
LEFT JOIN t2 
    ON t2.date = DATE_ADD(t1.date, INTERVAL 1 DAY) AND t1.device_id = t2.device_id;
-- 连接条件为 t2 的日期是 t1 的日期加一天且设备 ID 相同


全部评论

相关推荐

2025-12-11 14:24
门头沟学院 Java
在debug的伊泽瑞...:我说怎么这么眼熟查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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