题解 | #查询每天刷题通过数最多的前二名用户id和刷题数#

查询每天刷题通过数最多的前二名用户id和刷题数

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

请查询每天刷题通过数最多的前二名用户id和刷题数,输出按照日期升序排序,查询返回结果名称和顺序为 date|user_id|pass_count

        1.每天刷题通过数最多

        2.前二名用户id和刷题数

        3.按照日期升序排序

分组排序类,前N名,很适合用row_number来进行排序。

第一步,用row_number来进行排序,

select user_id, pass_count, date, row_number() over(partition by date order by pass_count desc) rk
from questions_pass_record

效果:

​​

 第二步,选出rk<=2的,

select date,user_id,pass_count from (
    select user_id, pass_count, date, row_number() over(partition by date order by pass_count desc) rk
    from questions_pass_record
)t1
where rk <=2

 效果:

此题比较简单,按照日期分类,排序按照通过题目数,用row_number排序后很容易得到结果

全部评论
我想请教一个问题,这里为啥partition的时候只写了date,没有先把一个user_id在一天内回答的所有类型题目sum在一起呢? 因为题干问的是每天刷题通过数最多的前二名“用户”而不是“记录”
1 回复 分享
发布于 2024-01-09 22:21 香港
感觉你的思路是对的,但是因为这个题目数据中date都不同,不存在需要把同一个用户在一天内回答的所有类型题目总和在一起
点赞 回复 分享
发布于 2024-10-09 16:16 浙江

相关推荐

03-19 10:07
已编辑
广东药科大学 golang
Yki_:你倒是进一个面啊
点赞 评论 收藏
分享
评论
15
3
分享

创作者周榜

更多
牛客网
牛客企业服务