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

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

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

全部评论

相关推荐

ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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