题解 | 最长连续登录天数

最长连续登录天数

https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b

with t1 as( #第一步,先按date排序,注意用dense_rank可以避免出现同一天多次登陆情况
select
    user_id,
    fdate,
    dense_rank()over(partition by user_id order by fdate) drn
from tb_dau
where fdate between '2023-01-01' and '2023-12-31'
),
t2 as(#第二步,创建辅助列diff,用登陆日期减去第一步得到的排名,如果连续登陆,则diff相同
select 
    user_id,
    fdate,
    fdate - interval drn day diff
from t1
),
t3 as( #第三步计算每个用户每次连续登陆的天数,注意count里要用distinct,因为第一步用的dense_rank
select 
    user_id,
    count(distinct fdate) cnt
from t2
group by user_id, diff
)
#第四步,求最终结果,每个用户最大的连续登陆次数。
select 
    user_id,
    max(cnt) max_consec_days
from t3
group by user_id


全部评论

相关推荐

06-18 16:45
门头沟学院 Java
玩脱了,吊着两家结果两家都不要鼠鼠了,我真想给自己两巴掌。
凉风落木楚山秋:当作是你把这两家公司从地球开除了就行了
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:14
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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