MySQL/184. Department Highest Salary 部门最高工资的员工

本文提供了五种不同的SQL查询方法,用于找出每个部门中薪资最高的员工。这些查询使用了子查询、连接和聚合函数,展示了如何高效地从数据库中获取所需信息。

题目


 

 

 

 

代码部分一(1268ms)

SELECT 
    D.Name AS Department,E.Name AS Employee,E.Salary
    FROM Employee E,Department D
    WHERE E.DepartmentId=D.Id AND E.Salary IN(
        SELECT MAX(e.Salary) FROM Employee e GROUP BY e.DepartmentId HAVING e.DepartmentId=D.Id
    );

 

代码部分二(987ms)

SELECT
    D.Name AS Department,E1.Name AS Employee,E1.Salary
    FROM Employee E1
    JOIN Department D ON D.Id=E1.DepartmentId
    WHERE E1.Salary IN(
        SELECT MAX(E2.Salary)
        FROM Employee E2
        WHERE D.Id=E2.DepartmentId
    );

 

代码部分三(593ms)

SELECT
    D.Name AS Department,E1.Name AS Employee,E1.Salary AS Salary
    FROM Department D,Employee E1
    WHERE D.Id=E1.DepartmentId AND (E1.DepartmentId,E1.Salary) IN(
        SELECT E2.DepartmentId,MAX(E2.Salary)
        FROM Employee E2
        GROUP BY E2.DepartmentId 
    )

 

代码部分四(281ms)

SELECT d.Name AS Department,
       e.Name   AS Employee,
       e.Salary AS Salary
FROM employee e, department d
WHERE e.DepartmentId = d.Id
      AND (e.DepartmentId, e.Salary) IN (
  SELECT
    e2.DepartmentId,
    max(e2.Salary)
  FROM employee e2
  GROUP BY e2.DepartmentId
)

 

代码部分五(263ms)

SELECT d.Name AS Department, e.Name AS Employee, t.Salary FROM
Employee e 
INNER JOIN 
(SELECT DepartmentId, MAX(Salary) AS Salary FROM Employee GROUP BY DepartmentId) t
USING(DepartmentId, Salary)
INNER JOIN 
Department d
ON d.id = t.DepartmentId

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值