题解 | 查询连续登陆的用户
查询连续登陆的用户
https://www.nowcoder.com/practice/9944210610ec417e94140ac09512a3f5
# 查询连续登录不少于3天的新注册用户 # 连续登录天数 # 按每个用户,登录日期对记录排序,编写连续序号 # 将登录日期转换为与2022-02-08相差的天数 # 如果是连续登录,那么相差天数-连续序号应该是相同数字 # t1 选出需要的数据,用户,登录日期,相差天数,连续序号 # 按用户,相差天数-连续序号聚合 # having选出连续登录>=3天的用户 with t1 as ( select lg.user_id, date_format(log_time, "%Y-%m-%d") log_day, datediff(log_time, "2022-02-08") diff_day, row_number() over(partition by lg.user_id order by log_time) rn from login_tb lg inner join register_tb rg on lg.user_id = rg.user_id) # 只要2/8后新注册的用户 select user_id from t1 group by user_id, diff_day-rn having count(*) >= 3;