题解 | SQLW11 查询连续登陆的用户

WITH t1 AS (
    SELECT user_id,
           DATE(log_time) AS log_date
    FROM login_tb
    WHERE user_id in
    (SELECT user_id FROM register_tb)
    GROUP BY user_id, DATE(log_time)
),
t2 AS (
    SELECT user_id,
           log_date,
           RANK() over (PARTITION BY user_id
               ORDER BY log_date) AS ranking
    FROM t1
),
t3 AS (
    SELECT user_id,
           date_add(log_date,INTERVAL -ranking DAY) AS after_date
    FROM t2
),
t4 AS (
    SELECT user_id,
           after_date,
           COUNT(after_date) AS cont
    FROM t3
    GROUP BY user_id, after_date
)
SELECT user_id
       FROM t4
WHERE cont >= 3
ORDER BY user_id ASC;

# 常规的连续登录问题!

全部评论

相关推荐

头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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