题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#
某宝店铺连续2天及以上购物的用户及其对应的天数
https://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf
连续问题又来了,见前面领取金币
步骤:
- 1. 添加新列,排序row_number()
- 2. 做差,date_sub()
- 3. 分组统计,group by
思路:
1. 判断用户连续,排序并做差。
- 对用户活跃日期进行排序,row_number()
- 当连续的时候,会有当天的日期-排序序数=定值,即date_sub(dt,interval rn day)是定值
2. 按照定值分组,统计有几天,count(定值)
select user_id, count(diff) as days_count from( -- 做差 select user_id, sales_date, date_sub(sales_date,interval rn day) as diff from( -- 添加新列,rn select user_id, sales_date, row_number() over(partition by user_id order by sales_date) as rn from sales_tb where month(sales_date) = '11' ) t1 ) t2 group by user_id,diff having days_count >= 2
