重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4972|回复: 2
打印 上一主题 下一主题

sql中的cube和rollup

[复制链接]
跳转到指定楼层
楼主
发表于 2012-10-25 10:11:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

要使用CUBE,首先要了解GROUP BY。
其实CUBE和ROLLUP区别不太大,只是在基于GROUP BY 子句创建和汇总分组的可能的组合上有一定差别,CUBE将返回的更多的可能组合。如果在GROUP BY子句中有N个列或者是有N个表达式的话,结果集上会返回2的N-1次幂个可能组合。

CUBE和ROLLUP之间的区别在于:     
    
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。  

ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合
    
ROLLUP就是将GROUP BY后面的第一列名称求总和,而其他列并不要求
而CUBE则会将每一个列名称都求总和  

一个例子,首先用ROLLUP

查询语句:

Select cust_id,product_code,sum(qty) as quantity

From invoices Where cust_id IN (4,5)

Group By cust_id, product_code

WITH Rollup Order By cust_id

查询结果:
cust_id         product_code         quantity
-------        --------------         -------
NULL            NULL                      10
4                 5                                 3
4                 6                                 3
4                 NULL                         6
5                 5                                 4
5                 NULL                         4
第一行是4,5买的所有产品的数量
第二行是4买5产品的数量
第三行是4买6产品的数量
第四行是4买所有产品的数量
第五行是5买5产品的数量
第六行是5买所有产品的数量

如果查询语句中的ROLLUP关键字更改为CUBE,就会多出有关产品的信息
查询结果:
cust_id         product_code         quantity
-------        --------------         -------
NULL            NULL                       10
NULL            5                               7
NULL            6                               3
4                    5                               3
4                    6                               3
4                    NULL                       6
5                    5                               4
5                    NULL                       4
第2行是所有顾客买5产品的数量
第3行是所有顾客买6产品的数量
  
ROLLUP操作的结果集具有类似 COMPUTE BY所返回结果集的功能;然而ROLLUP 具有下列优点:     
    
ROLLUP返回单个结果集;COMPUTE     BY返回多个结果集,而多个结果集会增加应用程序代码的复杂性。   
   
ROLLUP可以在服务器游标中使用;COMPUTE BY不可以。   
    
有时,查询优化器为ROLLUP生成的执行计划比为 COMPUTE BY 生成的更为高效。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

板凳
发表于 2012-10-25 11:31:16 | 只看该作者

个人感觉岂止有点复杂

回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2012-10-25 10:14:17 | 只看该作者

个人感觉还是有点复杂

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-25 04:53 , Processed in 0.130956 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表