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之神