题解 | 最长连续登录天数

最长连续登录天数

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; # 选出每个用户最大的连续登陆天数

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务