select user_id,count(primary_date) as days_count
from(
select user_id,sales_date,
row_number() over(partition by user_id order by sales_date) as rk,
date_sub(sales_date,interval row_number() over(partition by user_id order by sales_date)  day) as primary_date
from (
    select distinct user_id,sales_date from sales_tb
    )a)
b
group by user_id
having count(primary_date)>=2
order by user_id

常规的计算连续登陆天数问题

先排序,再构造基准日期,再count(基准日期)

一个坑是一天多次登录不算连续,因此在排序之前要进行distinct