select
user_id,max(day_num)
from
(
select
user_id,go_date,count(*) as day_num
from
(select
user_id,sales_date,
sales_date - rank() over(partition by user_id order by sales_date) as go_date
from sales_tb
group by user_id,sales_date
order by user_id,sales_date) t1
group by user_id,go_date
having count(*) >= 2) t2
group by user_id
order by user_id

连续登录问题的本质是一样的,即按照排序求出每个日期“出发日期”,存在两个出发日期一样的即为连续登陆了两天