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

查询连续登陆的用户

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

我这个想法挺巧妙的:把用户登录天数排序,然后用天数-序数,这样就得到了一个数字。
最后用group by 查看每个人每个数字重复次数,就筛选出了连续登录天数
select user_id
from
(select user_id,ranking,count(1) as cnt
from 
(select user_id,day(log_time)-
row_number()over(partition by user_id order by log_time) as ranking
from
(    select a.user_id,log_time,log_port
    from login_tb a ,register_tb b
    where a.user_id=b.user_id
    union all
    select user_id,reg_time as log_time,reg_port as log_port
    from register_tb

    order by user_id,log_time) as t) as t2
group by user_id,ranking
having cnt>=3) as t3

全部评论

相关推荐

04-13 09:56
已编辑
嵌入式工程师
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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