【发布时间】:2020-06-12 07:29:19
【问题描述】:
如:select sum(b),sum(c),sum(sum(b)+sum(c)) from t1 group by a;
在 oracle 中,它给出了异常:'ORA-00979: not a GROUP BY expression' 指向 sum(b) 中 b 的指针。
在我看来,计划是:
第一步:
select sum(b),sum(c) from t1 group by a; //sub1
第二步:
select sum(sum(b)+sum(c)) from sub1;
为什么 oracle 会给出异常?
【问题讨论】:
-
为什么不直接使用
sum(a + b)? -
谢谢,指针是那个语法异常,是oracle的bug吗?
-
不,在我看来,这不是一个错误。
sum(sum(a)+sum(b))所期望的只是a和b列的所有值的总和,表示为sum(a) + sum(b)或sum是聚合函数,而不是加法函数。 -
不,这不是错误。根本不支持嵌套聚合
-
不,这不是错误。如果你真的想写,你必须使用第三个 sum 的分析版本: sum(sum(b)+sum(c)) over () ,或者你在使用 sub-query/with 子句
标签: sql oracle oracle11g group-by aggregate-functions