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

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

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

select time,
count(distinct t.uid) dau,
round(sum(if(time=first_day,1,0))/count(distinct t.uid),2) uv_new_ratio
from (
    select uid,date(in_time) time from tb_user_log 
    union  
    select uid,date(out_time) time from tb_user_log
) t
left join (
    select uid,min(date(in_time)) first_day 
    from tb_user_log
    group by uid
    ) f
on f.uid=t.uid
group by time 
order by time

(1)找到每个用户登陆的第一天作为first_day

(2)之后将用户的in_time和end_time进行分开后UNION去除重复值(这样可以将原来in_time和end_time跨天的记录变成两条记录)

(3)按照时间进行GROUP BY,之后进行DINSTINCT uid就是每天的活跃用户数(这里也可以不使用DISTINCT,因为在UNION的时候已经去除重复值了)。之后计算每天中新用户数量即可。

全部评论

相关推荐

10-25 22:20
门头沟学院 Java
代码飞升_不回私信人...:同学院本,个人亮点去了,打招呼里面的废话也去了,学院本就是路边一条,明天拉满然后该学还是学,小厂也行尽量先有一段实习。另外你的项目描述写的不好,具体列一下可被提问的点,然后量化一下指标或者收益吧
投了多少份简历才上岸
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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