关于rollup和cube等高级函数

本文介绍了Oracle数据库中Cube函数的应用,通过一个具体的SQL查询案例展示了如何使用Cube函数进行多维度的数据汇总,包括不同维度组合的汇总结果。

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

Oracle提供了很多高级的统计函数,如rollup、cube、grouping、grouping sets,同时在数据库层还提供了维、立方等对象,可以通过定义维和立方实现查询重写,提高数据仓库的

select 批次号,种类,单位类型,sum(金额),count(1) from数据表 where批次号 = 20080727 and顺序号 < 200807031223222133 group by 批次号,cube(种类,单位类型);

----------------------------------------------------

120080727 175176.6 1395(汇总行)
220080727 73 175176.6 1395(根据单位类型汇总行)
320080727 11 107122.4 413(根据种类汇总行)
420080727 11 73 107122.4 413(根据种类单位类型汇总行)
520080727 31 62534.2 430
620080727 31 73 62534.2 430
720080727 32 5520 552
820080727 32 73 5520 552

执行计划中会有

SELECT STATEMENT, GOAL = ALL_ROWSCost=21Cardinality=32Bytes=1120
SORT GROUP BYCost=21Cardinality=32Bytes=1120
GENERATE CUBECost=21Cardinality=32Bytes=1120
SORT GROUP BYCost=21Cardinality=32Bytes=1120
TABLE ACCESS BY INDEX ROWIDObject owner=Object name=Cost=20Cardinality=175Bytes=6125
INDEX RANGE SCANObject owner=Object name=IDX__AAB001Cost=4Cardinality=370

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值