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

查询连续登陆的用户

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;

全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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