ROW_NUMBER() OVER
时间: 2023-09-04 07:15:41 浏览: 87
SQL中的ROW NUMBER() OVER()
`ROW_NUMBER() OVER` 是 SQL 中的窗口函数,它可以为查询结果集中的每一行分配一个行号。其基本语法如下:
```
ROW_NUMBER() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC|DESC], ...
)
```
`PARTITION BY` 子句用于将结果集分成多个分区,每个分区内的行将使用独立的行号进行编号。`ORDER BY` 子句用于指定行号的排序规则。如果不指定 `PARTITION BY` 子句,则整个结果集将视为一个分区。
以下是一个示例查询,使用 `ROW_NUMBER() OVER` 为 `employees` 表中每个部门的员工分配一个行号:
```
SELECT
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS row_number,
first_name,
last_name,
department,
salary
FROM
employees
```
在这个示例查询中,我们指定了 `PARTITION BY department` 子句,将 `employees` 表按照 `department` 字段进行分区。然后,我们使用 `ORDER BY salary DESC` 指定按照 `salary` 字段进行降序排序。执行此查询,将为每个部门中的员工分配一个行号,按照薪水从高到低进行排序。
阅读全文