我有一张桌子 EmpDetails
:
DeptID EmpName Salary
Engg Sam 1000
Engg Smith 2000
HR Denis 1500
HR Danny 3000
IT David 2000
IT John 3000
我需要查询每个部门的最高薪水。
原文由 Qinnovator 发布,翻译遵循 CC BY-SA 4.0 许可协议
SELECT DeptID, MAX(Salary) 从 EmpDetails GROUP BY DeptID
上述查询是公认的答案,但不适用于以下情况。假设我们必须在下表中找到每个部门中薪水最高的员工。
部门编号企业名称薪水英格山姆1000英格史密斯2000英格汤姆2000人力资源丹尼斯1500人力资源丹尼3000它大卫2000它约翰3000
请注意,Smith 和 Tom 属于 Engg 部门,两人的薪水相同,是 Engg 部门中最高的。因此查询“SELECT DeptID, MAX(Salary) FROM EmpDetails GROUP BY DeptID”将不起作用,因为 MAX() 返回单个值。以下查询将起作用。
SELECT DeptID, EmpName, Salary FROM EmpDetails WHERE (DeptID,Salary) IN (SELECT DeptID, MAX(Salary) FROM EmpDetails GROUP BY DeptID)
输出将是
部门编号企业名称薪水英格史密斯2000英格汤姆2000人力资源丹尼3000它约翰3000