topic
Employee table contains information on all employees, each has its corresponding employee Id, salary and department Id.
Department table contains information about all sectors of the company.
Write a SQL query to find the highest wages of employees in each department. For example, according to the above given table, Max had the highest wages in the IT department, Henry had the highest wages in the Sales department.
analysis
-- 查看员工表
SELECT
*
FROM
employee;
-- 查看部门表
SELECT
*
FROM
department;
-- 每个部门的最大薪水
SELECT
DepartmentId,
MAX( Salary )
FROM
Employee
GROUP BY
DepartmentId;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200225113606400.png)
-- 连接员工表和部门表
SELECT
*
FROM
Employee
JOIN department ON Employee.DepartmentId = Department.Id;
-- 加上前面那个部门薪水最高的表过滤一下
SELECT
*
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId , Employee.Salary) IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
;
-- 列名
SELECT
Department.Name as Department,
Employee.Name as Employee,
Salary
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId , Employee.Salary) IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
;
answer
-- 查看员工表
SELECT
*
FROM
employee;
-- 查看部门表
SELECT
*
FROM
department;
-- 每个部门的最大薪水
SELECT
DepartmentId,
MAX( Salary )
FROM
Employee
GROUP BY
DepartmentId;
-- 连接员工表和部门表
SELECT
*
FROM
Employee
JOIN department ON Employee.DepartmentId = Department.Id;
-- 加上前面那个部门薪水最高的表过滤一下
SELECT
*
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId , Employee.Salary) IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
;
-- 列名
SELECT
Department.Name as Department,
Employee.Name as Employee,
Salary
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId , Employee.Salary) IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
;