典型的连续问题

1、row_number() over(partition by author_id order by answer_date asc) as "rk"

2、如果3天内连续回答问题,那么这三天的 date_add(answer_date, interval - rk day) as ”辅助列“ 必定是相同的

3、然后

count(distinct answer_date) as "days_cnt" #这个就是连续回答的天数

group by author_id ,辅助列

with a as (
        SELECT 
        author_id,
        count(distinct answer_date) as days_cnt
        from (
                select 
                author_id,
                answer_date,
                #row_number() over(partition by author_id order by answer_date asc) as "rk",
                date_add(answer_date, interval -(dense_rank() over(partition by author_id order by answer_date asc)) day) as "辅助列"
                from answer_tb
        ) as t
        group by author_id,辅助列
        having days_cnt>=3
)

SELECT 
df1.author_id,
df2.author_level,
df1.days_cnt
from a as df1
left join author_tb as df2
on df1.author_id = df2.author_id
order by df1.author_id asc