题解 | #牛客每个人最近的登录日期(三)#

牛客每个人最近的登录日期(三)

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了)

最后就用:当天登陆且第二天连续登陆的用户数/总用户数得到结果数据

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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