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

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

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

  • 完整代码
SELECT AVG(flag) avg_ret
FROM (
    SELECT device_id, DATE,
        (
            SELECT IF(COUNT(*)>0,1,0)
            FROM question_practice_detail qp2
            WHERE qp2.device_id = qp1.`device_id` AND datediff(qp2.date, qp1.date)=1
        ) as flag -- flag标记的是这个device_id在date日的次日是否会回访
    FROM question_practice_detail qp1
    GROUP BY device_id, DATE
    ) as b;

第二个select查询的结果如下图

flag字段可以标记该行记录记载的用户和日期的后一天,是否会有回访记录,因为有可能有两条回访答题记录,所以用if将数字转换成0或者1

全部评论

相关推荐

02-15 09:23
已编辑
深圳技术大学 Java
德勤 后端 OC 实习140/天,转正税前7k
恶龙战士:不如码农烧烤
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务