温馨提示×

sql row_number()函数实例

sql
小樊
83
2024-10-19 15:22:02
栏目: 云计算

row_number() 是 SQL 中的一个窗口函数,用于在结果集中为每一行分配一个唯一的连续整数。这个整数通常基于某个排序顺序递增。以下是一些使用 row_number() 函数的实例:

实例 1:基于某个字段的排序分配行号

假设有一个名为 employees 的表,包含以下字段:employee_id, first_name, last_name, salary。我们想要根据 salary 字段降序排列员工,并为每个员工分配一个行号。

SELECT 
    employee_id, 
    first_name, 
    last_name, 
    salary, 
    ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM 
    employees;

在这个查询中,ROW_NUMBER() 函数会根据 ORDER BY salary DESC 子句中指定的排序顺序(即降序排列)为每个员工分配一个行号。

实例 2:在多个字段上分配行号

假设我们想要根据 department_idsalary 字段对员工进行排序,并为每个员工分配一个行号。

SELECT 
    employee_id, 
    first_name, 
    last_name, 
    department_id, 
    salary, 
    ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS row_num
FROM 
    employees;

在这个查询中,PARTITION BY department_id 表示行号会在每个 department_id 分组内重新计数。ORDER BY salary DESC 则指定了在每个分组内的排序顺序。

实例 3:使用其他排序依据

你可以根据需要更改 ORDER BY 子句中的字段或表达式来改变行号的分配顺序。例如,如果你想要根据员工的入职日期进行排序并分配行号,可以这样做:

SELECT 
    employee_id, 
    first_name, 
    last_name, 
    hire_date, 
    ROW_NUMBER() OVER (ORDER BY hire_date) AS row_num
FROM 
    employees;

在这个查询中,行号会根据 hire_date 字段的值递增分配。

0