计算每个部门的最高薪水

时间:2017-10-18 03:42:40

标签: sql

我必须创建一个报告,显示每个部门的最高工资。 我必须有以下列:department_id,department_name,last_name和MAX(薪水)。并且它不能包含任何重复项。

我设法获得了包含所有列的查询结果,但是由于last_name列,我有一个查询结果如下所示。

90, Executive, De Haan, 17000

90, Executive, Kochhar, 17000

80, Sales, Tucker, 10000

80, Sales, Bernstein, 9500

80, Sales, Hall, 9000

显然,执行部门最高的是17000,销售额是10000。我需要为每个部门只显示1个工资金额。关于我如何实现这一点的任何想法?

下面是我输入SQL以获得此结果的内容。

SELECT  DISTINCT department_id, department_name, last_name, MAX(salary)

FROM    employees

NATURAL JOIN departments

GROUP BY department_id, department_name, last_name

ORDER BY MAX(salary) DESC;

1 个答案:

答案 0 :(得分:0)

因此,您需要找到每个部门ID的最高工资,然后加入员工表以提取姓氏。像这样:

SELECT sub.department_id, sub.department_name, emp.last_name, sub.max_sal
FROM
(SELECT e.department_id, d.department_name, MAX(e.salary) AS max_sal
 FROM employees e
 INNER JOIN departments d
 ON e.department_id = d.department_id
 GROUP BY e.department_id, d.department_name) sub
INNER JOIN employees emp
ON sub.department_id = emp.department_id
AND sub.max_sal = emp.salary

请注意,如果这个解决方案具有相同的薪水,那么这个解决方案会显示多个人,而且这个部门的部门最高。