📜  SQL Server 中的 RANK()函数(1)

📅  最后修改于: 2023-12-03 15:20:15.310000             🧑  作者: Mango

SQL Server 中的 RANK()函数

在 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 列返回。

注意事项
  • RANK() 函数可以与其他窗口函数一起使用。
  • 如果在 RANK() 函数中使用了 PARTITION BY 子句,那么计算排名时会在每个分组内部进行。
  • 如果两个或多个行具有相同的值,则他们的排名将是相同的,然后接下来的排名将跳过这些排名。
  • 如果在 ORDER BY 子句中指定了多个表达式,则排名将根据表达式列表的顺序进行计算。