题解 | #最长连续登录天数#
最长连续登录天数
https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b
WITH t AS( SELECT fdate, user_id, DENSE_RANK() over (PARTITION BY user_id ORDER BY fdate) AS rk FROM tb_dau WHERE YEAR(fdate) = 2023 AND MONTH(fdate) = 1 ), t1 AS( SELECT t.*, DATE_SUB(fdate, INTERVAL rk DAY) AS diff_day FROM t ), t2 AS ( SELECT user_id, COUNT(diff_day) AS consec_days FROM t1 GROUP BY user_id, diff_day ) SELECT user_id, MAX(consec_days) AS max_consec_days FROM t2 GROUP BY user_id;