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

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

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

  1. 首先,建立一张表,包含用户活跃的日期以及成为新用户的日期,因为in和out可以跨天,并且一个用户可以在一天内活跃多次,所以我们要用union来去重,用窗口函数来寻找新用户日期:min(date(in_time))OVER(PARTITION BY uid)
  2. 然后在上表的基础上,新增一列来表示它是否是新用户,如果活跃日期等于成为新用户日期,则返回1,否则返回0
  3. 最后在上表基础上,计算即可。
  • 怎么说呢,最近感觉做题很没有思路,这道题和上道题都是参考别人的才做出来,感觉看别人的就觉得逻辑很简单,但自己却想不到,而且感觉做题很没有状态,不像之前了,是因为休息了几天反而思维跟不上了?还是因为基础确实不够牢固,值得反思
select
 dt,
 count(1) as dau,
 round(sum(num)/count(1),2) as uv_new_ratio
 from
 (select
	*,
    if(dt=new_dt,1,0) as num
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)t1)t2
group by dt
order by dt

全部评论

相关推荐

01-14 19:01
吉首大学 Java
黑皮白袜臭脚体育生:加个项目吧,一般需要两个项目一业务一轮子呢,简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务