关于rollup和cube等高级函数

本文通过一个具体的示例,展示了如何使用 Oracle 数据库中的 Cube 函数进行多维度的数据汇总分析。示例中详细解释了 Cube 函数的工作原理,并通过执行计划说明了其背后的处理过程。

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

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

 

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

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

1 20080727                     175176.6       1395(汇总行)
2 20080727           73      175176.6       1395(根据单位类型汇总行)
3 20080727   11              107122.4         413(根据种类汇总行)
4 20080727   11    73      107122.4         413(根据种类单位类型汇总行)
5 20080727   31              62534.2           430
6 20080727   31    73      62534.2           430
7 20080727   32              5520                552
8 20080727   32    73      5520                552

 

 

执行计划中会有

SELECT STATEMENT, GOAL = ALL_ROWS   Cost=21 Cardinality=32 Bytes=1120
 SORT GROUP BY   Cost=21 Cardinality=32 Bytes=1120
  GENERATE CUBE   Cost=21 Cardinality=32 Bytes=1120
   SORT GROUP BY   Cost=21 Cardinality=32 Bytes=1120
    TABLE ACCESS BY INDEX ROWID Object owner=Object name=Cost=20 Cardinality=175 Bytes=6125
     INDEX RANGE SCAN Object owner=Object name=IDX__AAB001 Cost=4 Cardinality=370 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值