0

我有一个表 Employee ,其内容如下

-------------------------------------------------- -----------------
姓名 部门 薪金
-------------------------------------------------- -----------------
赫曼特 PTS 100
Gunjan PTS 101
阿莫尔 ADM 50
帕提夫 ADM 60
-------------------------------------------------- -----------------

我想编写一个 SINGLE 查询来按 PTS 显示最高薪水消费者组的名称。换句话说,查询的输出应该是 Gunjan 和 Parthiv 来自不同的部门并且在该部门获得最高薪水。

-------------------------------------------------- -----------------
姓名 部门 薪金
-------------------------------------------------- -----------------
Gunjan PTS 101
帕提夫 ADM 60
-------------------------------------------------- -----------------

下面的查询工作正常

SELECT E.Department,MAX(E.Salary) FROM 
Employee E
GROUP BY Department;

但是如何选择名称以及部门和 Max(Salary)?

4

1 回答 1

4

由于您没有提到任何 RDBMS,因此下面的这个查询几乎可以在任何 RDBMS 上工作(但我猜不是全部

SELECT  a.*
FROM    Employee a
        INNER JOIN
        (
            SELECT  Department, MAX(Salary) Max_Val
            FROM    Employee
            GROUP   BY Department
        ) b ON a.Department = b.Department AND
                a.Salary = b.Max_Val

输出

╔═════════╦════════════╦════════╗
║  NAME   ║ DEPARTMENT ║ SALARY ║
╠═════════╬════════════╬════════╣
║ Gunjan  ║ PTS        ║    101 ║
║ Parthiv ║ ADM        ║     60 ║
╚═════════╩════════════╩════════╝
于 2013-05-14T06:01:49.390 回答