ROW_NUMBER()函数的使用

今天在做一道用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的前三个 (前三名)

 

 

 

具体使用详情可参考:https://blog.csdn.net/Zhuxxxxx/article/details/123795141
posted @ 2023-04-03 11:43  史可轩  阅读(86)  评论(0编辑  收藏  举报
3 4