题解 | 最长连续登录天数
最长连续登录天数
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