leetcode 184 部门工资最高的员工

题目描述:Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

Department 表包含公司所有部门的信息。

编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。

解答思路:

查询目标:查询 department, 员工名字,员工工资 (意味着程序将使用select语句

查询范围:EmployeeDepartment两个表格

查询条件:每个部门具有最高工资的员工(意味着同一个部门的员工工资将进行比较

分析:为了获取完整的返回结果,需要从题目给出的 Employee Department 两个表格中获取数据,所以使用 inner join 关键字将两个表格中的内容匹配并连接。

为了分别得到每个部门最高工资,我们需要在on中限制salary的数值,并使用 where 子句来限定当前返回的员工仅与同一个部门的员工进行工资数额的比较(不包括其他部门的员工)。

程序解答:

select 
    de.name as Department,
    em.name as Employee,
    em.salary
 from 
    department de
 inner join 
    employee em
 on 
    de.id = em.departmentid
 and em.salary >= (select max(Salary) from Employee where DepartmentId = de.Id)

猜你喜欢

转载自www.cnblogs.com/WYLFZ/p/10706902.html