SQL Server 中的 RANK()函数
RANK()函数是一个窗口函数,可在 SQL Server 中用于计算结果集分区内每一行的排名。
相同的等级分配给分区中具有相同值的行。第一行的排名为 1。在RANK()函数中排名可能不连续,因为它将重复行数与重复排名相加来计算下一行的排名。
句法 :
RANK() OVER (
[PARTITION BY expression, ]
ORDER BY expression (ASC | DESC) );
例子 -
让我们创建一个只有列 Name 的表 geek_demo :
CREATE TABLE geek_demo (Name VARCHAR(10) );
现在,在 sales.rank_demo 表中插入一些行:
插入 geek_demo(名称)
VALUES('A'), ('B'), ('B'), ('C'), ('C'), ('D'), ('E');
从 geek_demo 表中选择数据:
SELECT *
FROM sales.geek_demo;
Name |
---|
A |
B |
B |
C |
C |
D |
E |
让我们使用 RANK() 为 geek_demo 表的结果集中的行分配排名:
SELECT Name,
RANK () OVER (
ORDER BY Name
) AS Rank_no
FROM geek_demo;
输出 -
Name | Rank_no |
---|---|
A | 1 |
B | 2 |
B | 2 |
C | 4 |
C | 4 |
D | 6 |
E | 7 |