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

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

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

# 思路:将表视为第一天的刷题表,将同样的表进行表连接筛选出第二天的登入信息。

-- 定义第一个公共表表达式(CTE),选择 question_practice_detail 表中所有不同的 device_id 和 date
with t1 as
(
    select distinct device_id, date
    from question_practice_detail
),
-- 定义第二个公共表表达式(CTE),选择 question_practice_detail 表中所有不同的 device_id 和 date
t2 as
(
    select distinct device_id, date
    from question_practice_detail
)

-- 计算 t2 中的日期数与 t1 中的日期数的比值,如果结果为 NULL,则返回 0
select coalesce(count(t2.date) / count(t1.date), 0) as avg_ret
from t1
-- 使用 LEFT JOIN 将 t1 和 t2 连接在一起,连接条件是 device_id 相同且 t1 的日期加一天等于 t2 的日期
left join t2 on t1.device_id = t2.device_id and date_add(t1.date, interval 1 day) = t2.date;








全部评论

相关推荐

12-26 14:44
复旦大学 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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