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


    作者: cyw,  出处:IT专家网, 责任编辑: 李书琴, 

      本文以北京的一家宠物超市的货源供应链为例,为大家介绍如何将CUBE命令加载到SQL当中……

      【IT专家网独家】想要找一个既快捷又有效的方法来对您存储数据库里的数据进行汇总分析吗?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的一个简单介绍,经常上IT专家网查看关于数据库方面的新文章,可以学习到更多关于SQL语句的知识。

    IT专家网原创文章,未经许可,严禁转载

  • 相关阅读:
    【笔记】Hierarchical Attention Networks for Document Classification
    Chart Parser 中 Earley's 算法的应用
    使用 JFlex 生成词法分析器的安装配置及简单示例
    UNIX 系统下退出 git commit 编辑器
    SQL语法
    MySQL 和 Javaweb 的报错合集
    最短路径(SP)问题相关算法与模板
    dfs | Security Badges
    redis哨兵机制图谱
    docker笔记
  • 原文地址:https://www.cnblogs.com/henryhappier/p/1762582.html
Copyright © 2020-2023  润新知