题解 | #牛客每个人最近的登录日期(五)#
牛客每个人最近的登录日期(五)
https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8
-- 首先分享一下接替思路:留存率一般是用当天数据与次日数据进行关联,同时还要加上用户的关联条件。
-- 接下来就看表中关联次日表的情况,如果关联次日表为空,就说明次日该用户未登录
-- 同时考虑新用户怎么限定?:当日数据,根据用户进行分组,按照日期排序,开窗。
-- 于是,只需要在最后统计的时候限定为1的即为新用户。
select
t1.date,
round(ifnull(count(if(rn=1,t1.users_id,null)) *1.0/ count(if(rn=1,t1.user_id,null)),0), 3)
from
(
select
t1.user_id,
t1.date,
t1.rn,
t2.user_id as users_id
from
(select *,row_number() over(partition by user_id order by date) rn from login) t1
left join
login
t2 on DATE_ADD(t1.date, INTERVAL 1 DAY) = t2.date
and t1.user_id = t2.user_id
) t1
group by
t1.date
order by
t1.date
#23届找工作求助阵地#
途虎公司福利 103人发布