专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 数据库

浅谈with cube与with rollup之差别

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
浅谈with cube与with rollup之区别

           最近这段时间一直在看SQL Server视频,虽然了解了SQL Server运行环境、语言基础和设计基础,但还没有真正的转化为自己的知识。一方面,是刚接触数据库,另一方面,就是自己只是看视频、记笔记,没有去思考和总结。下面是我对group by字句中with  cubewith  rollup的总结:

        当需要对数据库数据进行分类统计的时候,往往会用上group by进行分组。而在group by后面还可以加入with  cubewith rollup等关键字对数据进行汇总。那什么时候用with cube?什么时候用with rollup?

一、两者的区别    
 CUBE   
生成的结果集显示了所选列中值的所有组合的聚合。 
 ROLLUP   
生成的结果集显示了所选列中值的某一层次结构的聚合。

二、两者的用法(实例说明)

     CUBE:除了返回GROUP BY子句指定的列外,还返回按组统计的行。返回的结果先按分组的第一个条件排序显示,再按第二个条件列排序显示,以此类推。统计行包括了GROUP BY 子句指定的列的各种组合的数据统计

     Select  所属部门,性别,AVG(年龄)  FROM  导师表  Group  by 所属部门,性别 With cube

所属部门

性别

年龄

纪律部

24

纪律部

22

纪律部

null

23纪律部成员的平均年龄

学习部

25

学习部

22

学习部

null

24学习部成员的平均年龄

博客检查委员会

24

博客检查委员会

22

博客检查委员会

null

23博委所有成员的平均年龄

null

null

23所有成员的平均年龄

null

22所有女成员的平均年龄

null

24所有男成员的平均年龄

    ROLLUP:CYBE不同的是,此选项对GROUP BY子句中的列顺序敏感,它只返回第一个分组条件指定的列的统计行,改变列的顺序会使返回的结果的行数发生改变。

     Select  所属部门,性别,AVG(年龄)  FROM 导师表  Group  by 所属部门,性别 With rollup

所属部门

性别

年龄

纪律部

24

纪律部

22

纪律部

null

23纪律部成员的平均年龄

学习部

25

学习部

22

学习部

null

24学习部成员的平均年龄

博客检查委员会

24

博客检查委员会

22

博客检查委员会

null

23博委所有成员的平均年龄

null

null

23所有成员的平均年龄

null

22

null

24

注:CUBE显示所有组合而ROLLUP则不会显示后两行

           还有一个比较简单的实例,拿来和大家分享一下:

简单表   Inventory   中包含:

Item                                   Color                                 Quantity                                      
--------------------   --------------------   --------------------------  
Table                                 Blue                                   124                                                
Table                                 Red                                     223                                                
Chair                                 Blue                                   101                                                
Chair                                 Red                                     210                                                

下列查询将生成小计报表:

SELECT   CASE   WHEN   (GROUPING(Item)   =   1)   THEN   'ALL '
                        ELSE   ISNULL(Item,   'UNKNOWN ')
              END   AS   Item,
              CASE   WHEN   (GROUPING(Color)   =   1)   THEN   'ALL '
                        ELSE   ISNULL(Color,   'UNKNOWN ')
              END   AS   Color,
              SUM(Quantity)   AS   QtySum
FROM   Inventory
GROUP   BY   Item,   Color   WITH   ROLLUP

Item                                   Color                                 QtySum                                          
--------------------   --------------------   --------------------------  
Chair                                 Blue                                   101.00                                          
Chair                                 Red                                     210.00                                          
Chair                                 ALL                                     311.00                                          
Table                                 Blue                                   124.00                                          
Table                                 Red                                     223.00                                          
Table                                 ALL                                     347.00                                          
ALL                                     ALL                                     658.00                                          

(7   row(s)   affected)

如果查询中的   ROLLUP   关键字更改为   CUBE,那么   CUBE   结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:

ALL                                     Blue                                   225.00                                          
ALL                                     Red                                   433.00  

         


7楼wang13667539325前天 20:04
好快呀,小青。 。。。。。。华英
Re: gxq741718618昨天 08:00
嗯,一步步来,别着急。
6楼xjc12780032623天前 14:59
先学习啦!
Re: gxq7417186183天前 14:59
嗯,一起学习!
5楼wangyongxia9213天前 14:58
不错哦!
Re: gxq7417186183天前 14:59
嗯学习中,希望可以 走好每一步
4楼lfmilaoshi3天前 10:42
基础。。。很重要。。。米老师
Re: gxq7417186183天前 11:19
嗯,积累中
3楼wss7846161585天前 19:43
技术的领导者!
Re: gxq7417186184天前 15:59
嗯,积累中,一起加油哦!
2楼zuozuo12455天前 14:35
鼓掌!
Re: gxq7417186185天前 14:36
嗯,一起努力!
1楼liushuijinger5天前 00:19
积累
Re: gxq7417186185天前 09:39
嗯,积累中,谢谢师哥
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: