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

使用SQL获取按部门分组的最大值,sql,oracle,group-by,Sql,Oracle,Group By,我试图从按部门分组的表ORG中查看最高工资。下面是我使用Oracle SQL创建的表数据 我使用该查询对部门和总工资进行分组和显示,如下所示,我从中获得了分组后的部门及其对应的总工资 查询:按部门从组织组中选择部门、合计(薪资) 结果: 但我希望结果只显示上面的最大值 例如,2 | HW | 113000。您能帮助修改上述查询吗..谢谢您似乎想要整行,而不是聚合。因此,在本例中,将where子句与相关子查询一起使用: select o.* from org o where o.salary

我试图从按部门分组的表ORG中查看最高工资。下面是我使用Oracle SQL创建的表数据

我使用该查询对部门和总工资进行分组和显示,如下所示,我从中获得了分组后的部门及其对应的总工资

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

结果

但我希望结果只显示上面的最大值
例如,2 | HW | 113000。您能帮助修改上述查询吗..谢谢

您似乎想要整行,而不是聚合。因此,在本例中,将
where
子句与相关子查询一起使用:

select o.*
from org o
where o.salary = (select max(o2.salary) from org o2 where o2.dept = o.dept);

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

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

如果有多个部门的薪资总额最大,则可能会有多行。

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

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
SQL>选择*
2来自(
3选择部门、总额(薪资)总额\薪资
4来自组织
5按部门分组
6.按金额和工资说明排序
7      )

8在rownum@Radim Bača,不存在的情况下,当存在多个部门时,此功能非常有效