题解 | #每天的日活数及新用户占比#
每天的日活数及新用户占比
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
