with tab as( select *,ROW_NUMBER()over(partition by author_id order by rk3) as days from( SELECT answer_date,author_id ,date_sub(answer_date,INTERVAL rank()over(order by answer_date,author_id) day) as rk3 # ,rank()over(order by answer_date,author_id) as rk2 from( select answer_date,author_id FROM answer_tb group by answer_date,author_id #去重 )ta )tb #还原签到起始日期 )#起始签到日期相同计数(连续签到计数) select author_id,author_level,max(days) as days_cnt from author_tb as at1 join tab using(author_id) where days>=3 group by author_id,author_level