题解 | #牛客每个人最近的登录日期(三)#
牛客每个人最近的登录日期(三)
https://www.nowcoder.com/practice/16d41af206cd4066a06a3a0aa585ad3d
select round(count(distinct if(diff_num=1,user_id,null))/count(distinct user_id),3) as p
from (
select user_id,
date,
datediff(lead(date,1)over(partition by user_id order by date),date) as diff_num
from login
)a
思路:当天登陆且第二天连续登陆的用户数/总用户数
总用户数计算方式:这个比较直接:count(distinct user_id)
当天登陆且第二天连续登陆的用户数:这个可以利用窗口函数lead,计算当前日期的下一个日期,并利用datediff函数计算当前日期和其下一个登录日期的差值,如果是1则说明是连续登陆,然后count(distinct diff_date=1的用户数就ok了)
最后就用:当天登陆且第二天连续登陆的用户数/总用户数得到结果数据
