`
Neil_yang
  • 浏览: 130075 次
  • 性别: 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的一个简单介绍。

分享到:
评论

相关推荐

    Oracle分组函数之ROLLUP的基本用法

    首先,我们来看一个简单的`ROLLUP`用法。假设有一个`DEPT`部门表和一个`EMP`员工表,我们需要计算每个部门的工资总和以及所有部门的总和。使用`UNION ALL`,我们可以分别对每个部门和所有部门进行分组,如下: ```...

    sql字符处理函数大全

    总之,SQL中的字符处理函数和聚合函数如ROLLUP、CUBE、LAG、LEAD、RANK和DENSE_RANK为数据分析师提供了强大的工具,使得复杂的数据汇总和分析变得简单高效。掌握这些功能,可以显著提高数据处理的能力和效率,是每一...

    oracle的分析函数汇总

    下面我们将对 Oracle 分析函数进行详细的介绍和分析。 自动汇总函数 自动汇总函数包括 Rollup 和 Cube 两个函数。 * Rollup 函数:用于对数据进行分组和汇总,生成一个总的汇总结果。例如,使用 Rollup 函数可以...

    T-sql简单介绍

    `CUBE` 是 `GROUP BY` 的一个扩展,它会为所有可能的分组组合生成结果集。例如: ```sql SELECT cust_id, SUM(pay1) AS pay11 FROM pay_list GROUP BY cust_id WITH CUBE; ``` 上面的例子中,`WITH CUBE` 会生成按 `...

    Mondrian Schema Cube 的编写

    在多维数据分析领域,Mondrian 是一个开源的 OLAP (Online Analytical Processing) 服务器,它能够处理复杂的查询并提供高性能的数据分析能力。Schema 在 Mondrian 中扮演着核心的角色,它定义了多维数据库的结构,...

    2021数仓面试题汇总.pdf

    星型模型是一种中心化的模型,包括一个事实表和多个维表。雪花模型是一个扩展的星型模型,每个维表都可以进一步分解为多个子维表。雪花模型的优点是可以减少数据冗余,但是它也增加了模型的复杂度。 2. 数仓结构层次...

    Oracle应用项目——简单数据查询应用.pdf

    分组(GROUP BY)是另一个关键概念,允许按一个或多个列进行数据分组。例如,例4-2按商品类别编号`t_ID`分组,然后计算每个组的商品数量。若需进一步筛选,`WHERE`子句用于在分组前过滤数据,而`HAVING`子句则在分组...

    mrcube:Scalding CUBE 运算符

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

    oracle分析函数介绍

    Rollup函数用于生成多级汇总数据,它可以创建一个类似于SQL GROUP BY语句的“GROUP BY GROUPING SETS”的效果。例如,可以计算每个区域、每个网络类型以及整个数据集的总费用。 Cube函数则更进一步,它不仅提供...

    SQL介绍

    如窗口函数(ROW_NUMBER、RANK、DENSE_RANK等)用于对数据进行排序和分组计算,CUBE和ROLLUP用于生成多维汇总数据,PIVOT和UNPIVOT用于数据的行列转换。 以上是关于SQL和数据库的基础知识介绍,掌握了这些内容,就...

    MySQL高级优化之-查询逻辑及where条件提取.pdf

    2. JOIN操作:如果FROM子句中有多个表,会继续对上一连接结果和下一个表进行JOIN,直至处理完所有表。 3. WHERE条件:在虚拟表VT3上应用WHERE子句(where_condition),只保留满足条件的行,生成VT4。WHERE条件是...

    Oracle分析函数

    假设有一个员工表`employees`,包含部门ID、经理ID、员工ID、姓名、入职日期、薪资和职位ID等字段。为了展示分析函数的应用,考虑以下查询: ```sql SELECT department_id, manager_id, employee_id, first_name ||...

    配置完全的Photo-Sphere-Viewer.zip

    3. `rollup.config.js`:Rollup是一个JavaScript模块打包器,用于将小块代码编译成大块复杂应用,这里用于构建和优化PSV项目。 4. `.browserslistrc`:定义了项目的浏览器兼容性范围,帮助自动化CSS前缀和Babel等...

    sql 分组,统计等常用语句

    这不仅包括基本的分组查询、条件筛选,还涉及到了更高级的功能,如聚合函数的使用、ROLLUP和CUBE的区别等。 ### 一、排序:ORDER BY `ORDER BY`子句用于对结果集进行排序,可以按照一个或多个列的值进行升序(ASC...

    spark 安装所需包1.zip

    Spark 是一个快速、通用且可扩展的大数据处理框架,而 Hadoop 是一个分布式存储和计算的开源框架。本资源包含的 Spark 3.0 和 Hadoop 2.7.1 的安装包,是用于搭建大数据处理环境的基础。 Spark 3.0 的主要特性包括...

    Server创建索引视图.pdf

    如果指定了 GROUP BY,视图定义不能包含 HAVING、CUBE 或 ROLLUP。 总的来说,索引视图提供了一种优化查询性能的方法,尤其是对于频繁使用的复杂查询。然而,使用它们需要谨慎,因为它们可能会增加存储需求,并可能...

    数据库管理系统概述英文版课件:17 Data Warehouse.ppt

    例如,一个简单的销售数据仓库可能包含供应商(Supplier)、零件(Part)和客户(Customer)等表。表T展示了供应商供应的零件被以不同的销售价格出售给客户的情况。通过预计算和聚合操作,如对部分和客户进行分组...

    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分析函数.doc

    5. **RANK**: 为每个组内的行分配一个唯一的排名,如果有相同值,会跳过中间的排名。 6. **DENSE_RANK**: 类似于RANK,但当遇到相同值时,不会跳过排名。 7. **FIRST_VALUE** 和 **LAST_VALUE**: 分别返回组内数据...

Global site tag (gtag.js) - Google Analytics