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

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

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

# 组合两个表的记录时间,计算每个用户的最早日期(用来判断是否是新用户)
# 


WITH temp_0 AS( # 临时表0 组合两个不同的时间到一列
    SELECT uid, DATE_FORMAT(in_time, '%Y-%m-%d') _date
    FROM tb_user_log
    UNION 
    SELECT uid, DATE_FORMAT(out_time, '%Y-%m-%d') _date
    FROM tb_user_log
    ),
    temp_1 AS( # 临时表1 开窗函数,找到每个用户最早的登录日期
    SELECT uid, _date, MIN(_date) OVER(PARTITION BY uid) first_date
    FROM temp_0
    ),
    temp_2 AS( # 临时表2 分组语句。根据日期分组,求得每天的活跃数,结合求和聚合函数求得每天活跃的是新用户的数量
    SELECT _date, COUNT(DISTINCT uid) dau, SUM(IF(_date = first_date, 1, 0)) new_dau
    FROM temp_1
    GROUP BY _date
    )

# 主查询简单除法即可
SELECT _date dt, dau, ROUND(new_dau/dau, 2) uv_new_ratio
FROM temp_2
ORDER BY dt

饿饿饿,点个外卖吃

全部评论
外卖感觉不卫生,算了
点赞 回复 分享
发布于 2024-02-03 00:07 北京

相关推荐

牛客120493863号:你姐东南大学硕士在读,那就找导师或者师兄师姐打听下同门同方向前辈就业最好的是去向哪几家公司了呗(如果不想走考公选调的话),这个是最有参考性的。
点赞 评论 收藏
分享
勇敢大角牛2:项目太基础了。小demo就不要往简历中写了,得分是什么鬼,大作业?。并且项目经历和你的求职意向岗位不匹配,没有体现硬件的亮点。话有点糙,还请谅解
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务