这题说实话配不上这个较难的等级,本质上就是一个求连续登陆的问题

  1. 按照普通连续登录的解题方法对不同uid分组下的日期进行编号,这里使用dense_rank是因为有用户重复在一天有多次的购买
    select user_id, 
    	sales_date, 
    	dense_rank() over(partition by user_id order by sales_date) as rk 
    	from sales_tb
  1. 将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