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

查询连续登陆的用户

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

思路:

  1. 去重,子查询找到目标用户
  2. 排序
  3. 相减 (date_sub第二个参数是天数!要用interval!)

-- 连续登录不少于三天
-- user_id 升序
with tmp as (
    select distinct user_id
           , date(log_time) as log_date
    from login_tb
    where user_id in (
        select user_id from register_tb
    )
)
, user_rn as (
    select user_id
           , log_date
           , row_number() over(partition by user_id order by log_date) as rn
    from tmp
)
, user_grp as (
    select user_id
           , count(*) as consecutive_days
    from user_rn
    group by user_id, date_sub(log_date, interval rn day)
)

select user_id from user_grp
where consecutive_days >= 3
order by user_id 

全部评论

相关推荐

12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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