题解 | 查询连续登陆的用户
查询连续登陆的用户
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;
