Sql 计算每个部门的最高工资

Sql 计算每个部门的最高工资,sql,Sql,我必须创建一个报告,显示每个部门的最高工资。 我必须有以下列:部门id、部门名称、姓氏和最高工资。它不能包含任何重复项 我已经设法获得了所有列的查询结果,但是由于姓氏列,我得到了如下查询结果 90, Executive, De Haan, 17000 90, Executive, Kochhar, 17000 80, Sales, Tucker, 10000 80, Sales, Bernstein, 9500 80, Sales, Hall, 9000 显然,执行部门的最高收入是17

我必须创建一个报告,显示每个部门的最高工资。 我必须有以下列:部门id、部门名称、姓氏和最高工资。它不能包含任何重复项

我已经设法获得了所有列的查询结果,但是由于姓氏列,我得到了如下查询结果

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;

因此,您需要找到每个部门id的最高工资,然后连接回employee表以提取姓氏。大概是这样的:

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

请注意,此解决方案将显示多个人,如果他们的工资相同,并且他们所在部门的工资最高。

员工表中有哪些列?部门id、姓氏和薪水您的要求有冲突。一方面,您希望包括姓氏,当多个人的工资最高时,姓氏会提供多个记录,另一方面,每个部门只需要一个记录。若你们真的只想要一条记录,而你们不在乎你们返回的是谁,那个么你们需要考虑一些类似于部门和薪水划分的东西,。然后选择第一张唱片。好的,谢谢,我不认为这是很容易做到的。这是我老师布置的作业的一部分……忘了自然连接结构吧。坚持显式连接条件(以在表定义更改时避免您和其他人的痛苦。)