SQL四大排名函数

本文详细介绍了SQL中的四种排名函数:ROW_NUMBER()、RANK()、DENSE_RANK()和NTILE()。ROW_NUMBER()提供连续且唯一的排名,RANK()在重复值时跳过排名,DENSE_RANK()保持连续排名无跳过,NTILE()则用于将数据分组排名。通过示例展示了每个函数的用法和区别。
摘要由CSDN通过智能技术生成

ROW_NUMBER():依次递增排名,无重复排名

语法:

ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)

意为:简单的说row_number()从1开始,为每一条分组记录返回一个数字,PARTITION BY表示将表中的记录按字段 COLUMN1进行分组,在分组内部按字段 COLUMN2 进行排序。因此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。

例1.salary表

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 18000  |
| 2  | 36500  |
| 3  | 40000  |
| 4  | 38500  |
| 5  | 40000  |
+----+--------+

> SELECT Salary, ROW_NUMBER() OVER (ORDER BY Salary DESC) rank FROM Salary

+--------+------+
| Salary | rank |
+--------+------+
| 40000  |  1   |
| 40000  |  2   |
| 38500  |  3   |
| 36500  |  4   |
| 18000  |  5   |
+--------+------+
 

这里的是先把Salary列降序,再为降序以后的每条Salary记录返回一个序号。

例2. 根据部门分组,显示每个部门的工资等级

+-------+--------+--------+
| empid | deptid | salary |
+-------+--------+--------+
|   1   |   10   | 5500.00|
|   2   |   10   | 4500.00|
|   3   |   20   | 1900.00|
|   4   |   20   | 4800.00|
|   5   |   40   | 6500.00|
|   6   |   40   |14500.00|
|   7   |   40   |44500.00|
|   8   |   50   | 6500.00|
|   9   |   50   | 7500.00|
+-------+--------+--------+

> SELECT *, Row_Number() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elyod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值