`
Neil_yang
  • 浏览: 126528 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

CUBE和ROLLUP的一个简单介绍

阅读更多

本文为网络转摘:


ROLLUP和CUBE是SQL的扩展命令,可以在SQL Server 6.5(及以上版本)和Oracle 8i(及以上版本)中使用。

  本文会为大家介绍如何将CUBE命令加载到SQL当中。我们将以北京的一家宠物超市的货源供应链为例,假设其数据表中包含了宠物商店供应链中有货源的宠物数量和类型:

  表Pets

 

Type
Store
Number
山东
12
山东
18
天津
4
天津
14
内蒙古
9
内蒙古
5
内蒙古

 

 

1

 

  作为这家宠物超市的老板,我们希望能够迅速了解关于存货各个方面的情况。我们可以雇一个SQL程序员,编写一些查询命令好获得我们需要的确切数据。还好,我们的数据集不是很大,所以我们可以兴致勃勃地站在一旁查看这些原始数据。使用CUBE命令就能够切实满足我们对数据的渴求。以下就是相应的SQL实例:

 

  SELECT Type, Store, SUM(Number) as Number 
  FROM Pets 
  GROUP BY type,store 
  WITH CUBE

 

  执行该查询返回的结果如下:

 

Type
Store
Number
山东
18
内蒙古
9
NULL
27
山东
12
内蒙古
5
天津
14
NULL
31
内蒙古
1
天津
4
NULL
5
NULL
NULL
63
NULL
山东
30
NULL
内蒙古
15
NULL
天津
18

 

  一下子多出了这么多的数据!请注意表中出现了很多额外的分组包括NULL行,这些绝不会出现在标准的GROUP BY命令所返回的结果中。它们都是CUBE指令所添加的汇总项。分析上面的结果数据,你会发现我们的供应链上还有27只猫、31只狗和5只龟,由三个不同地区的商店提供。山东店库存里的宠物数量最多,包含了目录里的30只宠物。

  我们对每个地区店的宠物总数并不是很感兴趣,我们只是要一个包含每种类型宠物的来源及其总数的数据。使用ROLLUP 操作符代替CUBE 操作符就能排除掉那些在第一列包含了NULL 的结果数据。

  SQL语法如下:

 

  SELECT Type, Store, SUM(Number) as Number 
  FROM Pets 
  GROUP BY type,store 
  WITH ROLLUP

 

  结果如下:

 

Type
Store
Number
山东
18
内蒙古
9
NULL
27
山东
12
内蒙古
5
天津
14
NULL
31
内蒙古
1
天津
4
NULL
5
NULL
NULL
63

 

  以上是对CUBE和ROLLUP的一个简单介绍。

分享到:
评论

相关推荐

    mrcube:Scalding CUBE 运算符

    cubify上的简单cubify和rollup方法。 对于每个输入元组 cubify 生成 2^n 个元组,其中 n 是我们正在立方的字段数 rollup 生成 n+1 个元组,其中 n 是我们正在汇总的字段数 开发 $ git clone ...

    jpivot学习总结.doc

    一个 Cube 是一系列维度 (Dimension) 和度量 (Measure) 的集合区域。在 Cube 中, Dimension 和 Measure 的共同地方就是共用一个事实表。 Cube 中的有以下几个属性: 属性名 含义 name Cube 的名字 caption ...

    Oracle_Database_11g完全参考手册.part3/3

    14.3 使用ROLLUP、GROUPING和CUBE 14.4 家族树和COlLrlectby 14.4.1 排除个体和分支 14.4.2 向根遍历 14.4.3 基本规则 第15章 更改数据:插入、更新、合并和删除 第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 ...

    Oracle_Database_11g完全参考手册.part2/3

    14.3 使用ROLLUP、GROUPING和CUBE 14.4 家族树和COlLrlectby 14.4.1 排除个体和分支 14.4.2 向根遍历 14.4.3 基本规则 第15章 更改数据:插入、更新、合并和删除 第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...

    Oracle数据库实验操作

    实验1:书写一个最简单的sql语句,查询一张表的所有行和所有列 9 实验2:查询一张表的所有行,但列的顺序我们自己决定 10 实验3:查询表的某些列,在列上使用表达式 10 实验4:使用sqlplus,进入sqlplus并进行简单的...

    SQL查询技巧(范例宝典)

     实例354 使用内联接选择一个表与另一个表中行相关的所有行 519  10.16 外联接查询 520  实例355 left outer join查询 521  实例356 right outer join查询 522  实例357 使用外联接进行多表联合...

    精通SQL 结构化查询语言详解

    8.3.3 ROLLUP运算符和CUBE运算符  8.3.4 GROUP BY子句中的NULL值处理  8.3.5 HAVING子句  8.3.6 HAVING子句与WHERE子句  8.3.7 SELECT语句各查询子句总结  第9章 多表查询  9.1 本章用到的实例表  ...

    C#程序开发范例宝典10

    512 实例350 多表联合查询 514 实例351 对联合查询后的结果进行排序 515 10.15 内联接查询 517 实例352 简单内联接查询 517 实例353 复杂内联接查询 518 实例354 使用内联接选择一个表...

    C#.net_经典编程例子400个

    96 实例077 带复选框的树状菜单 98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 ...

    精通SQL--结构化查询语言详解

    8.3.3 rollup运算符和cube运算符 151 8.3.4 group by子句中的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 156 第9章 多表查询 157 9.1 本章用到的...

    精通Oracle.10g.PLSQL编程

    使用SQL语句 4.1 使用基本查询 4.1.1 简单查询语句 4.1.2 使用WHERE子句 4.1.3 使用ORDERBY子句 4.2 使用DML语句 4.2.1 插入数据 4.2.2 更新数据 4.2.3 删除数据 4.3 ...

Global site tag (gtag.js) - Google Analytics