【问题标题】:Find out max value for each group along with name找出每个组的最大值以及名称
【发布时间】:2013-05-14 05:59:59
【问题描述】:

我有一个表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)?

【问题讨论】:

  • 你在用什么RDBMSRDBMS 代表关系数据库管理系统RDBMS is the basis for SQL,适用于所有现代数据库系统,如 MS SQL Server、IBM DB2、Oracle、MySQL 等...

标签: sql aggregate


【解决方案1】:

由于您没有提到任何 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 ║
╚═════════╩════════════╩════════╝

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2021-05-23
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多