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

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

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

select dt,count(uid) dau,
round(sum(if(dt=new_dt,1,0))/count(uid),2) uv_new_ratio
from
( select uid, min(date(in_time)) new_dt from tb_user_log
  group by uid 
) as tl right join 
( select uid,date(in_time) dt from tb_user_log
  union 
  select uid,date(out_time) dt from tb_user_log
) as t2 using(uid)
group by dt
order by dt;

虽然这回写的挺快,但看了第一个大佬的解题过程,感觉自己还是写复杂了。。。

再试试按大佬的思路再来一次

select dt,count(uid) dau,round(sum(if(dt=new_dt,1,0))/count(uid),2) uv_new_ratio from

(

select uid,date(in_time) dt,min(date(in_time))over(partition by uid) new_dt from tb_user_log

union

select uid,date(out_time) dt,min(date(in_time))over(partition by uid) new_dt from tb_user_log

) as t1

group by dt

order by dt;

合理使用窗口函数,少建很多表

;

全部评论

相关推荐

09-29 16:59
已编辑
门头沟学院 Java
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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