SQL:连续n天登录问题

某宝店铺连续2天及以上购物的用户及其对应的天数

https://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf

with t1 as (
    select distinct user_id, sales_date 
    from sales_tb
),
t2 as (
    select *, row_number() over(partition by user_id order by sales_date) as rn 
    from t1
),
t3 as (
    select *, date_sub(sales_date, interval rn day) as temp
    from t2
),
t4 as (
    select user_id, count(1) as days_count
    from t3
    group by user_id, temp
    having count(1) >= 2
)
select * from t4;

经典四步法

1.按用户名去重,去掉一天内多次登录的无效记录

2.借助row_number窗口函数,按用户id分组,同一用户第一次登录为1,第二次登录为2,第n次登录为n

3.创建temp计算临时日期,临时日期temp = 登录日期date - 第几次登录rn 用date_sub减 计算相同临时日期出现的次数n

4.n>=2的即为连续登录2天的用户

SQL学习笔记 文章被收录于专栏

学习sql,当sql之神

全部评论

相关推荐

牛客977679609号:感觉你会的东西还挺多的但简历一般都不这样写,建议只写一页,教育经历只留学校,导师单位啥的全去了,作品展示和自我评价都去了,科研成果写在所获荣誉里,项目保留,浓缩成一页。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务