#连续性标签,id减去id排序,结果相同代表对应id是互相连续的
select
    t4.author_id,
    author_level,
    days_cnt
from (
    select 
        distinct author_id, -- 去重
            r2,
            count(*)over(partition by author_id,r2) days_cnt 
    -- 按照( 日期列减去序号)排序,如果相同则表示连续
    -- 在统计几次,次数代表着连续排序的天数
    from (
        select 
            author_id,
            answer_date,
            r1,
            answer_date-r1 r2 -- -- 按照( 日期列减去序号),如果相同则表示连续
        from (
                select
                    author_id,
                    answer_date,
                    row_number()over(partition by author_id order by answer_date) r1
                from (
                    select
                        author_id,
                        answer_date
                    from answer_tb
                    group by author_id,answer_date
                ) t1 -- 先把同一个人在同一天的登录信息合并
            ) t2 -- 以人分组,按照日期从前到后打上序号
        ) t3 
    ) t4
    join author_tb  -- 连表查询其等级
    on t4.author_id=author_tb.author_id
where  days_cnt>=3  -- 筛选连续登陆天数大于等于3天的人