这题说实话配不上这个较难的等级,本质上就是一个求连续登陆的问题
- 按照普通连续登录的解题方法对不同uid分组下的日期进行编号,这里使用dense_rank是因为有用户重复在一天有多次的购买
select user_id,
sales_date,
dense_rank() over(partition by user_id order by sales_date) as rk
from sales_tb
- 将2天及以上购物的用户及其对应的天数分组求出来并按照user_id升序排列
select user_id,
max(rk) as days_count
from (
select user_id,
sales_date,
dense_rank() over(partition by user_id order by sales_date) as rk
from sales_tb
) temp
group by user_id
having days_count>=2
order by user_id