DB2 SQL Having 从句嵌套 Table 表达式

DB2 SQL Having Clause with a Nested Table Expression

Return部门编号和工资最高的部门的总工资。工资单是部门所有工资和佣金的总和。使用带有嵌套 table 表达式的 having 子句。

select e0.deptno,
(select sum(sal+com) FROM emp  
group by deptno
having sum(sal+com) >= all(select sum(sal+com) 
                       from emp
                       group by deptno) )as top
from emp as e0
group by e0.deptno
;

但是我的结果不正确。我不太确定我的嵌套 table 表达式与 having 子句的结合是否正确。有人可以帮助我吗?提前致谢。

就此而言,您不需要 having 子句。您可以按部门汇总,按工资单排序结果并获取第一条记录:

select deptno, sum(sal + com) payroll
from emp e
group by deptno
order by payroll desc
fetch first 1 rows only

如果您确实想使用 having(或者如果您使用的 db2 版本不支持 fetch ... rows ... 子句),那么我们可以按照您的初始想法进行构建,如下所示:

select deptno, sum(sal + com) payroll
from emp
group by deptno
having sum(sal + com) >= all (
    select sum(sal + com) from emp group by deptno
)