select a.author_id,
max(author_level),
max(case when 连续标识 = 1 then ranking end) as days_cnt
from
(select author_id,answer_date,
dense_rank() over(partition by author_id order by answer_date) as ranking,
case when datediff(t1.answer_date,(select max(answer_date)
from answer_tb where t1.author_id = answer_tb.author_id and
answer_tb.answer_date < t1.answer_date)) = 1
then 1 else 0 end
as 连续标识
from
answer_tb t1) a
join author_tb on a.author_id = author_tb.author_id
group by a.author_id
having days_cnt >= 3;