题解 | 最长连续登录天数

最长连续登录天数

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


全部评论

相关推荐

01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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