`
isiqi
  • 浏览: 16347028 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

使用CUBE和ROLLUP对数据进行汇总

阅读更多
  想要找一个既快捷又有效的方法来对您存储在数据库里的数据进行汇总分析吗?SQL语言中的ROLLUP和CUBE命令提供了一个非常有用的工具,可以让您快速深入地获取数据的各种内在性质。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的一个简单介绍。
分享到:
评论

相关推荐

    cube与rollup学习总结

    而在`GROUP BY`的基础上,`CUBE`和`ROLLUP`两个关键词则提供了一种更加灵活的数据分组方式,可以生成不同层次级别的汇总结果。 #### 一、Cube的理解 `CUBE`是SQL中的一个扩展关键字,它可以生成所有可能的分组组合...

    Oracle ROLLUP和CUBE 用法

    Oracle数据库中的ROLLUP和CUBE是两种用于生成数据汇总的SQL操作,它们在数据分析和报告制作中非常有用。本文将详细介绍这两个概念以及如何在实际应用中使用它们。 首先,我们来理解`ROLLUP`。ROLLUP操作是GROUP BY...

    Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示

    `CUBE`和`ROLLUP`是`WITH`子句中的两个特殊运算符,它们主要用于多维度数据分析和聚合操作,通常在`GROUP BY`语句中配合使用。 1. **CUBE运算符**: `CUBE`生成的结果集包含了所有可能的子集,即所选列中值的所有...

    Hive开窗函数测试-cube,rollup

    本篇将重点探讨Hive中的窗口函数以及如何利用它们进行cube和rollup操作。这些功能极大地增强了数据分析的能力,使得我们可以对数据进行更复杂的聚合。 窗口函数在SQL中是一种非常强大的工具,它允许我们在一个数据...

    ROLLUP的数据统计效果

    在数据库管理领域,`ROLLUP` 是一种用于生成汇总数据的SQL构造,它在多级分组时非常有用,...在使用`ROLLUP` 时,理解其生成的`NULL` 值的含义以及如何结合其他SQL语句进行数据筛选和排序,是提高数据分析效率的关键。

    SQL语句中Group BY 和Rollup以及cube用法

    在数据库管理中,当我们需要对某些特定字段的数据进行汇总统计时,经常会使用到`GROUP BY`。 #### Rollup 与 Cube 的概念介绍 - **Rollup**:用于生成包含所有可能的汇总级别的分组结果集。例如,在两个字段`部门`...

    rollup及cube的使用

    在Oracle数据库中,`ROLLUP`与`CUBE`是非常重要的分组函数,被广泛应用于数据汇总、数据分析等场景中。这两个功能可以帮助开发人员快速地对数据进行多维度分析,是开发人员必备的知识点之一。 #### ROLLUP的使用 `...

    oracle中聚合函数的扩展使用(ROLLUP CUBE、GROUPING()函数与ROLLUP、CUBE的结合使用等)

    当我们需要更复杂的分组和汇总信息时,可以使用扩展的聚合功能,如ROLLUP、CUBE以及GROUPING()和GROUPING_ID()函数。这些功能允许我们生成多层次的总计和小计,为数据分析提供了极大的灵活性。 1. ROLLUP子句: ...

    SQLSERVER中union,cube,rollup,cumpute运算符使用说明

    在SQLSERVER中,有四种特殊的运算符用于处理和汇总数据:UNION、CUBE、ROLLUP和COMPUTE。这些运算符在数据查询和分析时非常有用,尤其在处理多个数据源合并、多维数据分析和自定义汇总计算时。 首先,我们来详细...

    oracle的分析函数汇总

    例如,可以使用 Rollup 函数对数据进行分组和汇总,使用 Rank 函数对数据进行排名,使用 Lag 和 Lead 函数对数据进行延迟和前导操作,使用 Sum 和 Avg 函数对数据进行汇总和平均计算,使用 Ratio_to_Report 函数对...

    SQLServer中汇总功能的使用GROUPING,ROLLUP和CUBE

    然而,GROUP BY还可以与GROUPING、ROLLUP和CUBE运算符结合使用,以实现更复杂的多维度汇总功能。这些高级的汇总方法在数据分析和报表生成中非常有用,尤其是在处理大型数据集时。 GROUPING运算符主要用于识别汇总行...

    group by分组函数之rollup与cube用法1

    然而,需要注意的是,由于ROLLUP和CUBE会产生大量的行,所以在大数据集上使用时可能会消耗大量资源,因此应谨慎使用,并结合实际需求进行优化。此外,由于标签中提到了"ribbon",虽然在这个上下文中它似乎与主题无关...

    rollup cube grouping sets的用法

    它们不仅可以帮助我们进行复杂的多维度数据分析,还提供了极大的灵活性,使我们可以根据具体需求选择最合适的数据汇总方式。在实际应用中,合理地使用这些关键字能够极大地提高数据分析的效率和准确性。

    group by 后 使用 rollup 子句 总结.doc

    在 SQL 查询语言中,`GROUP BY` 语句被广泛应用于对数据进行分组处理,以便能够更好地汇总和分析数据。而在 `GROUP BY` 语句后加上 `ROLLUP` 子句,则能进一步扩展数据分组的能力,使得查询结果更加灵活多变。 **...

    rollup,cube,grouping sets()的个人理解

    通过使用`ROLLUP`,系统会自动添加各个字段的汇总行,例如先按`cgicode`分组,再按`cgicode`和`stockyear`分组,以此类推直到所有指定字段都被包含为止。 **结果分析**: 查询结果包含了从最细粒度(所有字段都有的...

    sql字符处理函数大全

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

Global site tag (gtag.js) - Google Analytics