题解 | 最长连续登录天数
最长连续登录天数
https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b
SELECT T3.user_id, MAX(T3.continue_days) AS max_consec_days FROM ( SELECT T2.user_id, T2.n_date, COUNT(*) AS continue_days FROM ( SELECT *, DATE_SUB(T1.fdate, INTERVAL rn DAY) AS n_date FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY fdate) AS rn FROM (SELECT DISTINCT fdate, user_id FROM tb_dau) AS T0 # 去除同一用户一天多次登录的影响 WHERE T0.fdate BETWEEN '2023-01-01' AND '2023-01-31' ) AS T1 # 对每个用户按登录日期排序 ) AS T2 # 用登陆日期减去排名,若连续登录,则得到的日期相等 GROUP BY T2.user_id, T2.n_date ) AS T3 # 计算每个用户的连续登录天数 GROUP BY T3.user_id; # 选出每个用户最大的连续登陆天数