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

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

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;








全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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