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

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

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

1)建立子查询:先关联author_tb表,获取用户的author_level字段,并对用户每天的回答进行去重排序。
SELECT DISTINCT author_id,answer_date,author_level,DENSE_RANK()OVER(PARTITION BY author_id ORDER BY answer_date)rk FROM answer_tb JOIN author_tb USING(author_id)

2)回答日期-排序的结果为同一天的定义为连续日期作答,对用户id,以及连续日期进行聚合后,取连续日期>=3的用户信息。
SELECT author_id,author_level,COUNT(1) days_cnt
FROM (SELECT DISTINCT author_id,answer_date,author_level,DENSE_RANK()OVER(PARTITION BY author_id ORDER BY answer_date)rk FROM answer_tb JOIN author_tb USING(author_id)
)t1
GROUP BY author_id,author_level,DATE_SUB(answer_date,INTERVAL rk DAY) HAVING COUNT(1)>=3 ORDER BY author_id;

SQL解题集 文章被收录于专栏

这是牛客SQL相关的解题集

全部评论
两个问题,1、怎么体现筛选了最大答问天数呢2、为什么是对用户去重而不是对日期做去重,dense_rank和date_sub不都是对日期的处理么
点赞 回复 分享
发布于 2024-01-10 16:39 湖南
这个更通俗易懂些
点赞 回复 分享
发布于 2022-11-17 23:03 广东
请问为什么不对author_level进行group by 就会报错呢?
点赞 回复 分享
发布于 2022-09-19 12:34 湖南

相关推荐

评论
11
6
分享

创作者周榜

更多
牛客网
牛客企业服务