使用SQL获取按部门分组的最大值
我试图从按部门分组的表ORG中查看最高工资。下面是我使用Oracle 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
例如,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,不存在的情况下,当存在多个部门时,此功能非常有效