概述
MySQL 自带的排名的函数,主要有:
row_number()rank()dense_rank()ntile()
测试数据
测试数据如下所示:

row_number() 函数
用法如下:
SELECT row_number() OVER (ORDER BY Salary DESC) row_num,Salary
FROMEmployee
查询结果如下:

注意,row_number() 函数在 Salary 相等的情况下,行号是递增的
rank() 函数
SELECT rank() OVER (ORDER BY Salary DESC) row_num,Salary
FROMEmployee
查询结果如下所示:

可以发现
- 在
Salary相等的情况下,行号是相等的。 Salary相等的一批数据的下一个Salary的行号不是连续的,比如说有两个Salary的行号都是2,那么下个Salary的行号将会是4。
dense_rank() 函数
用法如下:
SELECT dense_rank() OVER (ORDER BY Salary DESC) row_num,Salary
FROMEmployee
查询结果如下所示:

注意,与 rank() 的区别为,Salary 相等的一批数据的下一个 Salary 的行号是连续的,比如说有两个 Salary 的行号都是 2,那么下个 Salary 的行号将会是 3。
ntile() 函数
用法如下:
SELECT ntile(3) OVER (ORDER BY Salary DESC) row_num,Salary
FROMEmployee
查询结果如下所示:

ntile(int n) 函数,是把查询结果进行分组的函数,将查询结果分为 n 组