题解 | #查询每天刷题通过数最多的前二名用户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排序后很容易得到结果