with t1 as (
select
answer_date,
author_id
from
answer_tb
group by
answer_date,
author_id
)
select
t5.author_id,
author_tb.author_level,
t5.days_cnt
from (
select
author_id,
max(answer_cnt) as days_cnt
from (
select
author_id,
dt_diff,
count(dt_diff) as answer_cnt
from (
select
author_id,
answer_date,
rn,
date_sub(answer_date,interval rn day) as dt_diff
from (
select
author_id,
answer_date,
row_number() over (partition by author_id order by answer_date) as rn
from
t1
) as t2
) as t3
group by
author_id,
dt_diff
) as t4
group by
author_id
) as t5
left join
author_tb
on
t5.author_id = author_tb.author_id
where
t5.days_cnt >= 3
order by
t5.author_id