题解 | 查询连续登陆的用户
查询连续登陆的用户
https://www.nowcoder.com/practice/9944210610ec417e94140ac09512a3f5
select user_id from ( select distinct user_id, count(*) over ( partition by user_id, num ) num2 from ( select user_id, date1 - rank() over ( partition by user_id order by date1 ) num from ( select distinct user_id, date (log_time) date1 from login_tb where user_id in ( select distinct user_id from register_tb ) ) as t1 ) as t2 ) as t3 where num2 >= 3
搜了下这是一道比较经典的SQL类型题
这道题的步骤:
1.在用户登录信息表中筛选出用户和登录日期并去重,其中用户要是注册过的
2.我们按照用户登录时间使用窗口函数进行排名,并用用户登录日期减去排名,可以发现如果是连续登录的话,减法得到的结果相同
3.使用窗口函数得到按照用户id,减法结果分组后得到的个数
4.筛选个数>=3的用户id,并进行去重