题解 | SQL166 #每天的日活数及新用户占比#

每天的日活数及新用户占比

https://www.nowcoder.com/practice/dbbc9b03794a48f6b34f1131b1a903eb

WITH t1 AS (
    SELECT uid,
           in_time
    FROM tb_user_log
    UNION ALL
    SELECT uid,
           out_time AS in_time
    FROM tb_user_log
),
t2 AS (
    SELECT uid,
           in_time,
           RANK() over (PARTITION BY uid ORDER BY uid ASC, in_time ASC ) AS num_1
    FROM t1
),
t3 AS (
    SELECT uid,
           DATE (in_time) AS dt
    FROM t2
    WHERE num_1 = 1
),
t4 AS (
    # 新用户
    SELECT dt,
           count(uid) AS new_num
    FROM t3
    GROUP BY dt
),
t5 AS (
    SELECT uid,
           DATE (in_time) AS dt
    FROM t2
),
t6 AS (
    SELECT dt,
           count(DISTINCT uid) AS dau
    FROM t5
    GROUP BY dt
)
SELECT t6.dt,
       t6.dau,
       IFNULL(ROUND(t4.new_num / t6.dau ,2),0.00) AS uv_new_ratio
       FROM t6
LEFT JOIN t4
ON t6.dt = t4.dt
ORDER BY dt;

# 关键在于 IFNULL 进行 none 值转化为 0 值

全部评论

相关推荐

牛客84809583...:举报了
点赞 评论 收藏
分享
06-20 21:22
已编辑
门头沟学院 Java
纯真的河老师在喝茶:答应了就跑啊,实习随便跑啊,别被pua了,md就是找个廉价劳动力,还平稳过度正式工,到时候跟你说没转正
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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