#连续性标签,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天的人