📅  最后修改于: 2023-12-03 15:20:15.310000             🧑  作者: Mango
在 SQL Server 中,RANK()函数是一种用来计算行在结果集中排名的函数。它可以对查询结果中的数据进行排名,并返回排名结果的数字。
RANK() OVER (PARTITION BY column_name ORDER BY expression DESC|ASC)
column_name
: 用来分组的列名。expression
: 用来排序的表达式。DESC
|ASC
: 用来指定排序的顺序,默认情况下是升序。假设有如下数据:
| Name | Score | | ------ | ----- | | Alice | 80 | | Bob | 90 | | Carol | 80 | | David | 70 | | Emily | 85 | | Frank | 85 |
我们想要计算每个学生在成绩表中的排名,可以使用 RANK() 函数:
SELECT Name, Score, RANK() OVER (ORDER BY Score DESC) AS Rank
FROM Scores;
结果如下:
| Name | Score | Rank | | ------ | ----- | ---- | | Bob | 90 | 1 | | Emily | 85 | 2 | | Frank | 85 | 2 | | Alice | 80 | 4 | | Carol | 80 | 4 | | David | 70 | 6 |
上述语句会按照成绩的降序排列计算每个学生的排名,并将结果作为 Rank 列返回。