题解 | #每类试卷得分前3名#

每类试卷得分前3名

https://www.nowcoder.com/practice/255aa1863fe14aa88694c09ebbc1dbca

select tag,uid,ranking from 
(select t2.tag,t1.uid,
row_number()over(partition by t2.tag order by max(t1.score) desc,
min(t1.score) desc,max(t1.uid) desc) as ranking
from exam_record as t1 
left join examination_info as t2
on t1.exam_id=t2.exam_id
group by t2.tag,t1.uid) as t3
where ranking <4

新知识点:

  1. group by 后边加多个字段,参考该博客https://blog.csdn.net/qq_47699076/article/details/127946512
  2. 开窗函数:row_number()over(partition by 'col' order by 'col1,col2'.),开窗函数和聚合函数的区别:根据group by+字段把字段聚成一组,然后对改组进行操作,而partition by是把字段聚成一组,但是是按照每一条数据进行操作。

全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务