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