题解 | 最长连续登录天数

最长连续登录天数

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


全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
985本硕1个中小厂of...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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