编写一个 SQL 查询,找出每个部门工资最高的员工。-CSDN博客
我们可以使用嵌套查询和窗口函数来编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。
首先,我们可以使用窗口函数将每个部门的员工按照工资进行排序,并为每个员工分配一个排名。然后,我们可以使用嵌套查询,筛选出排名小于等于3的员工。
下面是一个示例的 SQL 查询:
```
SELECT department_id, employee_id, employee_name, salary
FROM (
SELECT department_id, employee_id, employee_name, salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM employees
) AS ranked_employees
WHERE rank <= 3;
```
在上述查询中,我们先使用窗口函数 `ROW_NUMBER()` 对每个部门的员工按照工资进行排序,并为每个员工分配一个排名。`PARTITION BY department_id` 表示按照部门进行分区,`ORDER BY salary DESC` 表示按照工资降序排序。然后,我们将这个结果作为子查询,并通过 `WHERE` 条件筛选出排名小于等于3的员工。
执行上述查询后,将返回每个部门获得前三高工资的所有员工的部门ID、员工ID、员工姓名和工资。
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。