MySQL-Department Highest Salary

The Employee table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.

+----+-------+--------+--------------+
| Id | Name  | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 70000  | 1            |
| 2  | Henry | 80000  | 2            |
| 3  | Sam   | 60000  | 2            |
| 4  | Max   | 90000  | 1            |
+----+-------+--------+--------------+

The Department table holds all departments of the company.

+----+----------+
| Id | Name     |
+----+----------+
| 1  | IT       |
| 2  | Sales    |
+----+----------+

Write a SQL query to find employees who have the highest salary in each of the departments. For the above tables, Max has the highest salary in the IT department and Henry has the highest salary in the Sales department.

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Max      | 90000  |
| Sales      | Henry    | 80000  |
+------------+----------+--------+

Subscribe to see which companies asked this question.


题目大意:

雇员表Employee保存了雇员的Id,姓名,薪水以及部门Id。

部门表Department保存了部门的Id和名称。

编写一个SQL查询,找出每一个部门中薪水最高的员工信息。样例及结果如上所示。

解题思路:

查找每一部门的最高薪水表t,如图:MySQL-Department Highest Salary_第1张图片MySQL-Department Highest Salary_第2张图片

 用上述生成的临时表和Employee表再做级联,找出题目要求的字段。

MySQL-Department Highest Salary_第3张图片


代码如下:
select t.department as Department,e1.name as Employee,t.salary as Salary from Employee e1 inner join(select e.departmentid,MAX(e.salary) as salary,d.name as department from Employee as e inner join Department as d on e.departmentid=d.id group by e.departmentid) t on e1.departmentid=t.departmentid and e1.salary=t.salary order by e1.id desc;



你可能感兴趣的:(MYSQL,数据库)