SQL184 | 店铺连续2天及以上购物的用户及其对应的天数
某宝店铺连续2天及以上购物的用户及其对应的天数
https://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf
#需求:统计连续2天及以上在该店铺购物的用户及其对应的次数
#输出:用户编号(user_id)、次数(days_count)
#要求:输出按user_id升序;用户范围为有连续两天以上购物记录(>1)
select user_id,count(*) days_count
from(
select distinct sales_date,user_id,
dense_rank()over(partition by user_id order by sales_date) ck1
#需求只按天考虑用户行为,这里对日期进行去重
#建立窗口函数排序日期,得到日期的排序序号,用于后续date_sub计算
from sales_tb
) w1
group by 1,date_sub(sales_date,interval ck1 day)
#group by中对date_sub聚合,得到的是每个聚合日期的count(*)次数,配合having剔除目标以外的数据
#如果是连续日期,这里date_sub减去ck1得到的序号,返回的会是与sales_date相同的日期,所以这个是用来确定连续日期的;
having count(*)>1
order by 1
