我必须创建一个报告,显示每个部门的最高工资。 我必须有以下列: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;
答案 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
请注意,如果这个解决方案具有相同的薪水,那么这个解决方案会显示多个人,而且这个部门的部门最高。