首页 > 代码库 > PLSQL_基础系列2_分组函数GROUP BY / ROLLUP / CUBE
PLSQL_基础系列2_分组函数GROUP BY / ROLLUP / CUBE
2014-11-30 BaoXinjian
一、摘要
ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集。
1. 下面是 CUBE 和 ROLLUP 之间的具体区别:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
2. ROLLUP 优点:
(1). ROLLUP 返回单个结果集,而 COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。
(2). ROLLUP 可以在服务器游标中使用,而 COMPUTE BY 则不可以。
(3). 有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。
二、创建测试数据
1. 创建资料
CREATE TABLE DEPARTMENT( DEPARTMENT CHAR (10), EMPLOYEE CHAR (6), SALARY INT); BEGIN INSERT INTO DEPARTMENT SELECT ‘A‘,‘ZHANG‘,100 FROM DUAL; INSERT INTO DEPARTMENT SELECT ‘A‘,‘LI‘, 200 FROM DUAL; INSERT INTO DEPARTMENT SELECT ‘A‘,‘WANG‘, 300 FROM DUAL; INSERT INTO DEPARTMENT SELECT ‘A‘,‘ZHAO‘, 400 FROM DUAL; INSERT INTO DEPARTMENT SELECT ‘A‘,‘DUAN‘, 500 FROM DUAL; INSERT INTO DEPARTMENT SELECT ‘B‘,‘DUAN‘, 600 FROM DUAL; INSERT INTO DEPARTMENT SELECT ‘B‘,‘DUAN‘, 700 FROM DUAL;END;
2. 查看资料
三、ROLLUP案例
ROLLUP结果集中多了三条汇总信息:即部门A的合计,部门B的合计以及总合计。其中将部门B中的DUAN合计
四、CUBE案例
CUBE的结果集是在 ROLLUP结果集的基础上多了5行,这5行相当于在ROLLUP结果集上在union 上以员工 (即CUBE)为 GROUP BY的结果
Thanks and Regards
PLSQL_基础系列2_分组函数GROUP BY / ROLLUP / CUBE
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。