代码之家  ›  专栏  ›  技术社区  ›  forgottofly

使用SQL获取按部门分组的最大值

  •  2
  • forgottofly  · 技术社区  · 6 年前

    我想从表中查看最高工资 组织 分组依据 。下面是我使用Oracle SQL创建的表数据

    enter image description here

    :按部门从组织组中选择部门、合计(薪资);

    :

    enter image description here

    但我希望结果只显示上面的最大值 例如,2 | HW | 113000。你能帮我修改一下上面的查询吗?谢谢

    3 回复  |  直到 6 年前
        1
  •  2
  •   Oiale    6 年前

    如果聚合查询中只需要一行,可以使用子查询来获取它。

    SQL> select * 
    2 from (
    3       select dept,SUM(salary) sum_salary 
    4       from org 
    5       group by dept
    6       order by sum_salary desc
    7      )
    8 where rownum <= 1
    
    DEPT       SUM_SALARY
    ---------- ---------- 
      HW       113000
    
        2
  •  2
  •   Gordon Linoff    6 年前

    where 子句,在本例中,包含相关子查询:

    select o.*
    from org o
    where o.salary = (select max(o2.salary) from org o2 where o2.dept = o.dept);
    
        3
  •  1
  •   Donat    6 年前

    您的查询已接近解决方案。您只需获取薪资值最大的行:

    WITH SUMSAL AS (SELECT DEPT, SUM(SALARY) AS SAL FROM ORG GROUP BY DEPT)
    SELECT * FROM SUMSAL 
    WHERE SAL = (SELECT MAX(SAL) FROM SUMSAL)
    

    如果有多个部门的工资总额最大,这可能会给您多行。