group、grouping、rollup、cube的用法和区别
来源:互联网 发布:it人才 编辑:程序博客网 时间:2024/06/05 10:04
use test
create table test(id int,sort char(10),color char(10),num int constraint pk_test primary key(id,sort,color))
--插入数据
insert into test
select 1,'book','blue',10
union all
select 1,'book','green',10
union all
select 1,'book','red',10
union all
select 1,'car','blue',10
union all
select 1,'car','red',10
union all
select 2,'car','red',10
--group by
select sort,color,sum(num) as num from test group by sort,color
--输出结果
--book blue 10
--car blue 10
--book green 10
--book red 10
--car red 20
--group by with rollup
select
case
when grouping(sort)=1 then 'all'
else isnull(sort,'unknow')
end as sort,
case
when grouping(color)=1 then 'all'
else isnull(color,'unknow')
end as color,
sum(num) as num from test
group by sort,color with rollup
--输出结果
--book blue 10
--book green 10
--book red 10
--book all 30
--car blue 10
--car red 20
--car all 30
--all all 60
--group by with cube
select
case
when grouping(sort)=1 then 'all'
else isnull(sort,'unknow')
end as sort,
case
when grouping(color)=1 then 'all'
else isnull(color,'unknow')
end as color,
sum(num) as num from test
group by sort,color with cube
--输出结果
--book blue 10
--book green 10
--book red 10
--book all 30
--car blue 10
--car red 20
--car all 30
--all all 60
--all blue 20
--all green 10
--all red 30
总结:
1、CUBE 和 ROLLUP区别:
? CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
? ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
2、GROUPING是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。
仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。
- group、grouping、rollup、cube的用法和区别
- group、grouping、rollup、cube的用法和区别
- group by后加rollup子句的用法以及与cube和grouping sets子句的区别
- ROLLUP、CUBE 和GROUPING用法 .
- group by cube,rollup, grouping set的用法
- group by的rollup、cube、grouping、grouping sets 的用法浅析
- group、grouping、rollup、cube的用法和区别(本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/junmail/archive/2006/12/26/1463132.aspx)
- DB2 Rollup、Cube、grouping 的用法说明
- group by rollup和group by cube的用法和区别
- sql 的cube rollup 和grouping
- Oracle的group by聚合函数扩展cube rollup和grouping sets
- Oracle的group by聚合函数扩展cube rollup和grouping sets
- Oracle的group by聚合函数扩展cube rollup和grouping sets
- [Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets
- [Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets
- GROUP BY 、CUBE 和 ROLLUP 用法对比
- Oracle ROLLUP和CUBE 用法 | decode | grouping | grouping_id
- ROLLUP、CUBE、GROUP BY的使用区别
- 局域网文件共享工具EasySMB
- java.lang.NoClassDefFoundError:org/apache/commons/beanutils
- 集成 Struts、Tiles 和 JavaServer Faces-JSP教程,Java技巧及代码
- JSP之pageEncoding和contentType属性讲解
- struts之Tiles框架标签库介绍归纳
- group、grouping、rollup、cube的用法和区别
- Using SQLCMD to deploy sql script on SQLServer
- 430 4*4键盘程序
- 初学者如何开发出高质量J2EE系统
- java.lang.ClassNotFoundException: org.apache.struts.tiles.TilesPlugIn
- 清空表之delete 和truncate两种方式及优缺点
- 35种音乐的分类与解释
- 保密协定 - Non Disclosure Agreement (NDA)
- javax.servlet Class UnavailableException