row_number()函数的使用方法及示例解析
row_number()函数是一种在SQL中用于给结果集中的每一行分配一个 的序号的窗口函数。这个序号是根据指定的排序条件计算得出的。
row_number()函数的语法如下:
row_number() OVER (ORDER BY column1, column2, ... columnN)
其中,row_number()是函数名称,OVER是关键字,ORDER BY是排序条件。
下面是一个使用row_number()函数的示例:
假设我们有一个名为"employees"的表,包含员工的信息,如下所示:
| employee_id | first_name | last_name | hire_date |
|-------------|------------|-----------|-------------|
| 1 | John | Doe | 2020-01-01 |
| 2 | Jane | Smith | 2020-02-01 |
| 3 | David | Johnson | 2020-03-01 |
| 4 | Sarah | Brown | 2020-04-01 |
| 5 | Michael | Lee | 2020-05-01 |
我们可以使用row_number()函数来为每个员工分配一个 的序号,根据其雇佣日期进行排序,示例代码如下:
SELECT
employee_id, first_name, last_name, hire_date,
ROW_NUMBER() OVER (ORDER BY hire_date) AS row_num
FROM
employees
执行以上代码后,结果集将如下所示:
| employee_id | first_name | last_name | hire_date | row_num |
|-------------|------------|-----------|-------------|---------|
| 1 | John | Doe | 2020-01-01 | 1 |
| 2 | Jane | Smith | 2020-02-01 | 2 |
| 3 | David | Johnson | 2020-03-01 | 3 |
| 4 | Sarah | Brown | 2020-04-01 | 4 |
| 5 | Michael | Lee | 2020-05-01 | 5 |
在结果集中,新增加了一个名为"row_num"的列,里面存储了每个员工对应的序号。
需要注意的是,row_number()函数是按照指定的排序条件递增地为每一行分配序号。如果有多行具有相同的排序字段值,它们将被分配相同的序号。
