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