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

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

http://www.nowcoder.com/practice/16d41af206cd4066a06a3a0aa585ad3d

select round(sum(case when a.later_date = date_add(a.date, interval 1 day) then 1 else 0 end) / count(a.user_id), 3) p
from (
        select # 先按用户id分区, 然后将日期列往前一行,添加新的列later_date
        user_id
        ,date
        ,lead(date,1) over(partition by user_id order by date) later_date
        ,row_number() over(partition by user_id order by date) r
        from login
     ) a
where r = 1 # 由于题目要求是新用户,所以筛选出每个用户分区后的第一行,然后再select中判断date列和later_date列是否是加一天的关系
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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