牛客SQL练习总结
计算新用户的次日留存率
- 太失败了!!一步一个坎,面对这个问题没有完整的思路,想到一半就无法继续了,只能看大佬们的sql获得启发
--思路
--这道题关键的两点,一个是标志出新用户,这个可以通过窗口函数min,根据uid分组,计算出首次登录时间
--另一个就是二次登陆日期,这个可以使用lead函数,根据uid分组,time排序
--还有一点需要注意的是题中有提到跨天用户,所以可以使用union将这个表拆成进入时间和离开时间重新拼在一起
--sql实现如下:
select time,round(sum(IF(DATEDIFF(nextime,time),1,0))/count(distinct uid),2) as rate
from
(select uid,time,min(time) over(partition by uid) as firstime,lead(time) over(partition by uid order by time) as nextime
from
(select uid,date(in_time) time
from tb_user_log
union
select uid,date(out_time) time
from tb_user_log)a)b
where time=firstime
group by time
order by time
标签:uid,--,SQL,牛客,time,select,小记
From: https://www.cnblogs.com/loveinmylife/p/18334193