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

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

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

#需求:统计每天的日活数及新用户占比
#输出:日期、日活数、新用户占比
#要求:uv_new_ratio保留两位小数,dt升序输出;如果进入时间和离开时间跨天,则两天里都记为该用户活跃
#新用户占比=当天的新用户数/当天活跃用户数
#思路:先拆分出日期格式(union),求用户的首次记录时间(新用户)、当日活跃数直接count,当日所有记录行即是活跃数
select dt,count(*) dau,round(sum(if(dt=ck1,1,0))/count(*),2) uv_new_ratio
#对于新用户数的解释,如果dt日期=ck1得到的日期,那么该日期就是一个用户的首次登录时间,计为1求和;ck1是求用户的首次登录时间的开窗
from(
  select uid,date(in_time) dt,min(date(in_time))over(partition by uid) ck1
  from tb_user_log
  union
  select uid,date(out_time) dt,min(date(in_time))over(partition by uid) ck1
  from tb_user_log
) e1
group by 1
order by 1

全部评论

相关推荐

不愿透露姓名的神秘牛友
12-18 11:21
优秀的大熊猫在okr...:叫你朋友入职保安,你再去送外卖,一个从商,一个从政,你们两联手无敌了,睁开你的眼睛看看,现在是谁说了算(校长在背后瑟瑟发抖)
选实习,你更看重哪方面?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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