#第1步:sales_date日期去重,因为一个用户在一天内可能购买多次。
#第2步:row_number窗口函数对日期排序,新建一列我们命名为rk。
#第3步:date_sub函数,确定日期分组;
# 因为rk记录一个用户登陆的天数,rk=1、2、3 说明一个用户连续登录了1、2、3天
# 我们用date_sub把每个用户的当前的sales_date减去rk,得出每位用户第一天购买的日期,就是日期分组。
# 比如 2021-1-1减去1 得2020-12-31 
#     2021-1-2减去2 得2020-12-31
#     2021-1-3减去3 得2020-12-31,
# 2021-12-31就是一个日期分组,
# 然后我们group by 每个user_id,日期分组,得出count(*)的数量就是连续登录的天数。

# 以下是代码:

select user_id,cnt as days_count
from
(select user_id,days_group,count(*)as cnt
from 
(
select *,date_sub(sales_date,interval rk DAY)as days_group 
from 
(select *,
        ROW_NUMBER()over(partition by user_id order by sales_date)as rk
from 
(select 
         distinct sales_date,user_id  from sales_tb
    )a
  )b
)c
group by user_id,days_group
)d
where cnt>=2
order by user_id