MySQL-Department Highest Salary

来源:互联网 发布:c4d下载mac 斯蒂芬周 编辑:程序博客网 时间:2024/06/05 15:11

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,如图:

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




代码如下:
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;



0 0
原创粉丝点击