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

查询连续登陆的用户

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


select
    user_id
    from
    (
        select
            user_id,
            if(lead(log_date) over (PARTITION BY user_id ORDER BY log_date) - log_date = 1, 1, 0) as d
        from
            (
                select
                    user_id,
                    date(log_time) as log_date
                from
                    register_tb
                    join login_tb using (user_id)
                where
                    reg_time is not null
                group by
                    user_id,
                   log_date
                order by
                    user_id
            ) t
        order by
            user_id
    ) t1
    group by user_id
    having sum(d) >= 2

那些写连续登陆问题喜欢用表自连接的真的上点心吧……连续三天登陆你的代码或许尚且可以运行,要是让你查个连续三十天登陆的,你联三十次表嘛?写代码别总想着应试教育那一套,用例过了不代表实际工作中能这么干,现实里你那么写是很危险的,三十次自连接,数据库分分钟瘫痪给你看

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:30
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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