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

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

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

1.先得到用户活跃表(用union去重)

select uid, date(in_time) dt from tb_user_log
union 
select uid,date(out_time) dt from tb_user_log

2.得到每名用户最早出现的时间

select uid,min(date(in_time)) new_time from tb_user_log
group by uid 

两表连接

(select uid, date(in_time) dt from tb_user_log
union 
select uid,date(out_time) dt from tb_user_log) t1
join 
(select uid,min(date(in_time)) new_time from tb_user_log
group by uid ) t2
on t1.uid = t2.uid

3.计算日活和新用户占比

日活(按照日期聚合记数)

count(t1.uid) 

新用户计算(当最早出现的时间等于当天,则取1,记为新用户)

sum(if(new_time=dt,1,0))

最终的代码

select dt, count(t1.uid) dau, round(sum(if(new_time=dt,1,0))/count(t1.uid),2) 
from (select uid, date(in_time) dt from tb_user_log
union 
select uid,date(out_time) dt from tb_user_log) t1
join 
(select uid,min(date(in_time)) new_time from tb_user_log
group by uid ) t2
on t1.uid = t2.uid
group by dt 
order by dt
全部评论

相关推荐

皮格吉:不,有的厂子面试无手撕,可以试试。都是一边学一边面。哪有真正准备好的时候,别放弃
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

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