ROW_NUMBER()
时间: 2023-09-03 20:11:01 浏览: 62
ROW_NUMBER()是一种窗口函数,用于为查询结果集中的每一行分配一个唯一的行号。它可以用于计算行号、排序等操作。
ROW_NUMBER()函数的语法如下:
```
ROW_NUMBER() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)
```
其中,PARTITION BY子句和ORDER BY子句是可选的。PARTITION BY子句用于将结果集分成若干个分区,每个分区内的行号是独立计算的。ORDER BY子句用于指定行号的排序规则。
例如,假设我们有以下表格:
```
CREATE TABLE employees (
id INT,
name VARCHAR(50),
salary DECIMAL(10, 2),
department VARCHAR(50)
);
INSERT INTO employees (id, name, salary, department)
VALUES (1, 'Alice', 5000, 'HR'),
(2, 'Bob', 8000, 'IT'),
(3, 'Carol', 6000, 'IT'),
(4, 'David', 7000, 'HR'),
(5, 'Emily', 9000, 'IT');
```
我们可以使用以下SQL语句查询每个部门工资排名前三的员工:
```
SELECT id, name, salary, department, ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees
WHERE rank <= 3;
```
这个SQL语句会先按部门分组,然后按工资降序排列,为每个部门内的员工分配一个行号。最后,筛选出每个部门工资排名前三的员工,输出它们的id、name、salary、department和rank。
阅读全文