📅  最后修改于: 2023-12-03 14:44:55.652000             🧑  作者: Mango
在Oracle数据库中,RANK()函数是通过排名给结果集进行编号的函数之一。该函数基于某些条件对结果集中的行进行排序,并对每行分配一个排名。 在 PARTITION BY 子句分割的分区内执行这个排序。
RANK() OVER ([PARTITION BY partition_expression, … ] <order_by_clause>)
参数说明:
假设有一个名为“employee” 的表,它包含以下几列:employee_id、employee_name、department_id 和 salary。现在我们想要计算每个部门中最高薪资的员工排名。那么可以执行以下代码:
SELECT employee_name, department_id, salary,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM employee
注释:
执行上述SQL的结果将如下所示:
| employee_name | department_id | salary | rank | | --- | --- | --- | --- | | Tom | 1 | 5000 | 1 | | Jack | 1 | 4500 | 2 | | Mary | 2 | 6000 | 1 | | David | 2 | 5500 | 2 | | John | 3 | 4800 | 1 | | Peter | 3 | 4600 | 2 |
这里给出了每个部门的最高薪资员工的排名。通过上面的结果可以看出:
总之,使用 RANK()函数可以轻松地计算出部门中最高薪资员工的排名,并且十分灵活,可以根据不同的业务需求进行使用。