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

本文通过宠物超市的供应链数据示例,介绍了SQL中的CUBE和ROLLUP命令,这两种工具能帮助用户轻松实现数据汇总分析。CUBE命令能够生成所有可能的汇总组合,而ROLLUP则提供了一种更为简洁的汇总方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  想要找一个既快捷又有效的方法来对您存储在数据库里的数据进行汇总分析吗?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语句的知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值