zoukankan      html  css  js  c++  java
  • [SQL]详解CUBE和ROLLUP区别<使用rollup或cube通过交叉列可产生高级汇总结果集>

    要使用CUBE,首先要了解GROUP BY。
    其实CUBE和ROLLUP区别不太大,只是在基于GROUP BY 子句创建和汇总分组的可能的组合上有一定差别,CUBE将返回的更多的可能组合。如果在GROUP BY子句中有N个列或者是有N个表达式的话,SQLSERVER在结果集上会返回2的N-1次幂个可能组合。
    
    CUBE和ROLLUP之间的区别在于:     
        
    CUBE 生成的结果集显示了所选列中值的所有组合的聚合。  
    
    ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合
        
    ROLLUP就是将GROUP BY后面的第一列名称求总和,而其他列并不要求
    而CUBE则会将每一个列名称都求总和  
    
    COPY了一个例子,首先用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买所有产品的数量(按照cust_id=4总汇)
    第五行是5买5产品的数量
    第六行是5买所有产品的数量(按照cust_id=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产品的数量(product_code=5 总汇)
    第3行是所有顾客买6产品的数量(product_code=6 总汇)
  • 相关阅读:
    mock of python
    Linux系统有7个运行级别(runlevel)
    linux下gsoap的初次使用
    python的sitecustomize.py妙用
    blkid命令 获取文件系统类型、UUID
    linux的一些核心配置文件
    Linux网卡配置与绑定
    CentOS 5.4 制作 Python 2.6 RPM 包的方法
    学会理解并编辑fstab
    HTTP协议通信过程汇总
  • 原文地址:https://www.cnblogs.com/beeone/p/3622293.html
Copyright © 2011-2022 走看看