GROUPPING和ROLLUP的基本知识
2016-04-05 09:53
274 查看
1.GROUPPING
是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。
语法:
参数: column_name是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。
返回类型: int
备注: 分组用于区分由 CUBE 和 ROLLUP 返回的空值和标准的空值。作为CUBE 或 ROLLUP 操作结果返回的 NULL 是 NULL 的特殊应用。
1.ROLLUP
ROLLUP 运算符生成聚合汇总, 需要汇总信息时,此运算很有用。该运算符生成的结果集类似于CUBE 运算符生成的结果集。但它们两者有一些区别,CUBE 生成的结果集显示了所选列中值的所有组合的聚合。而ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
语法: ROLLUP
用法: 用在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的聚合值产生一个汇总行。这样说逻辑可能不太清晰,我们看一下下面的图表就一目了然了。
是一个聚合函数,它产生一个附加的列,当用 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)的效果 |
相关文章推荐
- 关于Tcp,为什么一定要进行三次握手呢?
- java List.subList方法
- JAVA解析Excel表格并读取相关内容
- Node.js服务器
- 统计学习笔记(4) 线性回归(1)
- 【51单片机】静态与动态点亮数码管
- Review Board Creating a Review Board Site
- 日志搜索工具
- nodejs v8引擎c++编译版本升级教程
- 安装/还原Xp系统提示decompression error abort的解决方法
- Review Board Installing on Linux
- 转载光荣之路:与领导沟通那点事儿
- Git版本控制
- C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩
- iOS APP上架流程(发布到 APP Store)
- easyUI
- HttpURLConnection 访问服务器,GET和POST方法.
- Java 多线程之 synchronized 和 volatile 的比较
- style,currentStyle,getComputedStyle的区别和用法
- 1294 全排列——http://codevs.cn/problem/1294/