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

查询连续登陆的用户

https://www.nowcoder.com/practice/9944210610ec417e94140ac09512a3f5

WITH sub AS(
SELECT DISTINCT r.user_id, log_time, 
DAY(
    DATE_SUB(
        log_time, INTERVAL DENSE_RANK()OVER(PARTITION BY user_id ORDER BY DAY(log_time)) DAY
        )
    ) consec
FROM register_tb r JOIN login_tb l ON r.user_id = l.user_id
)

SELECT user_id FROM(
SELECT user_id, consec, COUNT(consec) consec_days
FROM sub
GROUP BY user_id, consec
HAVING consec_days >= 3
) subsub

使用DATE_SUB处理连续日期问题(如7,8,9,11,12)→ (7,7,7,11,11)然后用COUNT()计算连续登录天数;DISTINCT()用于处理一天登录多次的数据,防止误认为日连续登录

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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