已选择15行。
SQL>
--------------------------------------------------------------------------------
可以看出,
用了rollup的group by子句所产生的所谓的超级聚合就是指在在产生聚合时会从右向左逐个对每一列进行小结,并在结果中生成独立的一行,同时也会对聚合列生成一个合计列。
例如在scott用户下面有一个emp表:
select deptno,job,sum(sal) from emp group by deptno,job;
会对每一个不同的dept,job生成一行独立的结果。
而
select deptno,job,sum(sal) from emp group by rollup(deptno,job);
的结果中除了上述的结果结果之外,还会对每一个deptno进行一个小结,并单独生成一行,除此之外还会对所有的sal求和并生成一列。
这里的group by后面我们仅仅接了2列,实际上我们可以使用更多列的,这样的话oracle就会以从右向左的方式来进行逐个小结。
这里需要注意的是是使用了group by和rollup后,其后面的列要用括号括起来,否则将会出现ORA-00933: SQL 命令未正确结束的错误。