发表于: 2005.05.27 19:05
分类: 读书笔记
出处: http://yangtingkun.itpub.net/post/468/31107
---------------------------------------------------------------
数据库中经常用到聚集函数。在数据仓库中,更是经常要进行聚集操作,Oracle除了最基本的GROUP BY以外,还提供了ROLLUP和CUBE等函数。
ROLLUP:
GROUP BY A, B会对A和B出现的每种可能性进行分组。而GROUP BY ROLLUP(A, B)会对A和B出现的每种可能性分组,A的每种可能性分组,最后计算所有的情况。
CUBE:
和ROLLUP类似,GROUP BY CUBE(A, B)会对A和B出现的每种可能性分组,A的每种可能性分组,B的每种可能性分组,最后计算所有的情况。
Oracle为了解决引入ROLLUP和CUBE后,汇总和NULL值无法区分的情况,提供了GROUPING、GROUPING_ID和GROUP_ID三个函数。
Oracle提供的GROUPING SET语法,可以方便对指明任何维度的分组。
Concatenated Grouping:可以方便的快速生成大批量的GROUPING SET分组,避免了手工一一指定GROUPING SET的大量分组。
使用WITH子句可以预先将多次用到查询保存在临时表空间中,使得查询仅执行一回,来提高查询的性能。
使用聚集函数需要注意,ROLLUP和CUBE最多只能包括255列,不过一般情况下足够用了。











