1、理解题意:统计连续2天及以上在该店铺购物的用户及其对应的次数 (1)对应次数的统计,要注意存在1位用户在1天之内多次购买记录,需要进行去重; (2)连续2天及以上,可以利用row_number和date_sub结合处理,即当 “原date - 对应row_number的rank = 相同1值” 时,这种结果出现2次及以上,就符合 “连续2天及以上” 的要求。 2、实操: (1)利用row_number对用户下单日期进行排序: with k1 as ( select user_id,sales_date, row_number() over(partition by user_id order by sales_date) as rank1 from sales_tb ) 结果展示: 1 1|2021-11-01|1 2 2|2021-11-01|1 3 2|2021-11-01|2 4 3|2021-11-02|1 5 4|2021-11-02|1 6 5|2021-11-03|1 7 6|2021-11-03|1 8 7|2021-11-04|1 9 8|2021-11-04|1 10 9|2021-11-04|1 11 10|2021-11-05|1 12 10|2021-11-05|2 13 10|2021-11-05|3 14 10|2021-11-06|4 15 11|2021-11-06|1 (2)在排序之后,按照user进行分组统计,内部再按照《sales_date - 对应rank = 同1个数值》进行分类/分组统计,若“同1个数值” 的数量 >= 2个,那么就符合《连续2天及以上》的要求(having count(user_id) >= 2) select user_id, count(user_id) as days_count from k1 group by user_id,date_sub(sales_date,interval rank1 day) having count(user_id) >= 2