今天在做一道用SQL排名排序的类型问题时发现一个既好用又容易理解的SQL函数
ROW_NUMBER()
ROW_NUMBER() OVER(PARTITION BY SC.corse_id ORDER BY SC.number) RN
PARTITION BY后面跟需要分组的字段 该参数可选
ORDER BY 则是针对这个子句的排序 该参数必须的
比如:查询各科成绩前三名的记录
SELECT * FROM (
SELECT SC.student_id SNO,
SC.corse_id CNO,
SC.number SCORE,
ROW_NUMBER() OVER(PARTITION BY SC.corse_id ORDER BY SC.number DESC) RN
FROM score SC) A
WHERE A.RN <= 3 -- 取 rn的前三个 (前三名)
![](/i/l/?n=23&i=blog/2193172/202304/2193172-20230403114132823-1169992547.png)
具体使用详情可参考:https://blog.csdn.net/Zhuxxxxx/article/details/123795141 标签:函数,number,NUMBER,SC,ORDER,id,ROW From: https://www.cnblogs.com/xxks/p/17282658.html