题解 | #最大连续回答问题天数大于等于3天

某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级

https://www.nowcoder.com/practice/e080f8a685bc4af3b47749ca3310f1fd

典型的连续问题

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

全部评论

相关推荐

11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务