我正在尝试从按 DEPT 分组的 ORG 表中查看最高薪水。以下是我使用Oracle SQL创建的表数据
我已使用该查询对DEPT和总薪水进行分组和显示,如下所示,其中我获得了分组部门及其对应的总薪水
查询:从ORG GROUP BY DEPT中选择DEPT,SUM(SALARY);
结果:
但是我希望结果仅显示上述值的最大值 即2 |硬件| 113000。请您帮忙修改上面的查询。谢谢
答案 0 :(得分:2)
您似乎想要整行,而不是聚合。因此,在这种情况下,请使用where
子句以及相关的子查询:
select o.*
from org o
where o.salary = (select max(o2.salary) from org o2 where o2.dept = o.dept);
答案 1 :(得分:2)
如果汇总查询仅需要1行,则可以使用子查询来获取它。
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 :(得分:1)
您的查询已经接近解决方案。您只需要获得薪水最大值的行:
WITH SUMSAL AS (SELECT DEPT, SUM(SALARY) AS SAL FROM ORG GROUP BY DEPT)
SELECT * FROM SUMSAL
WHERE SAL = (SELECT MAX(SAL) FROM SUMSAL)
如果有多个部门的最高工资总额,这可能会给您提供多于一行的信息。