题解 | 查询连续登陆的用户
查询连续登陆的用户
https://www.nowcoder.com/practice/9944210610ec417e94140ac09512a3f5
with by_day as ( select user_id,log_time,DATE_SUB(date(log_time), INTERVAL (row_number() over(partition by user_id order by log_time)) DAY) day from login_tb where user_id in (select user_id from register_tb)) select user_id from by_day group by user_id,day having count(*)>=3 order by user_id
row_number() over(partition by user_id order by log_time) rn 给日期表个序号
DATE_SUB(date(log_time), INTERVAL rn DAY) 原日期减去序号 如果是按照顺序来的,那么就是相同的一天
select user_id from by_day group by user_id,day 按照人和天来分组,相同天数大于等于三的 就是连续登录大于等于三天的
查看10道真题和解析