zoukankan      html  css  js  c++  java
  • GROUPPING和ROLLUP的基本知识

    1.GROUPPING

    是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。

    语法: GROUPING ( column_name )
    参数: column_name是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。
    返回类型: int
    备注: 分组用于区分由 CUBE 和 ROLLUP 返回的空值和标准的空值。作为CUBE 或 ROLLUP 操作结果返回的 NULL 是 NULL 的特殊应用。

    1.ROLLUP

    ROLLUP 运算符生成聚合汇总, 需要汇总信息时,此运算很有用。该运算符生成的结果集类似于CUBE 运算符生成的结果集。但它们两者有一些区别,CUBE 生成的结果集显示了所选列中值的所有组合的聚合。而ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。

    语法: ROLLUP ( column_name1[,column_name2。。。] )
    用法: 用在GROUP BY 子句中。对那些需要按其分组,并对其分组的聚合数据进行汇总的列,就请对这些列加上ROLLUP运算符。
    注意: “GROUP BY ROLLUP(col1,col2)”与“GROUP BY ROLLUP(col1),ROLLUP(col2)”是有区别的。“GROUP BYROLLUP(col1),ROLLUP(col2)”其实就相当于“GROUP BY CUBE(col1,col2)”,因为它对每个分组的聚合都要进行汇总。“GROUP BY ROLLUP(col1,col2)”与“GROUP BY ROLLUP(col2,col1)”也有区别,前者是对每个col1的唯一值都产生一个在col1下各个col2聚合值汇总的行,再对所有col1与col2的聚合值产生一个汇总行;而后者是对每个col2的唯一值都产生一个在col2下各个col1聚合值的汇总行,再对所有col1与col2的聚合值产生一个汇总行。这样说逻辑可能不太清晰,我们看一下下面的图表就一目了然了。

    col1

    col2

    amount

     

     

     

     

     

     

     

    col1

    col2

    amount

    3

    2

    3584777

    3

    2

    3584777

    3

    3

    12774875

    4

    2

    200789.1

    3

     

    16359652

    5

    2

    274432

    4

    2

    200789.1

     

    2

    4059998

    4

    3

    8619498

    3

    3

    12774875

    4

     

    8820288

    4

    3

    8619498

    5

    2

    274432

    5

    3

    2024463

    5

    3

    2024463

     

    3

    23418837

    5

     

    2298895

     

     

    27478835

     

     

    27478835

     

     

     

    GROUP BY ROLLUP(col1,col2)的效果 

    GROUP BY ROLLUP(col2,col1)的效果 



  • 相关阅读:
    C#基础:ref和out的区别
    .NET Petshop详解(五):petshop输出缓存设置
    静态方法和实例化方法的区别
    .Net Petshop详解(一):petshop概览和准备工作
    什么是MVC(三层架构)
    C# 反射入门知识
    C#类与对象
    linux用户权限的管理
    PHP pear安装
    shell神器curl用法笔记
  • 原文地址:https://www.cnblogs.com/xiaohuihui123/p/5353914.html
Copyright © 2011-2022 走看看