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

被折叠的 条评论
为什么被折叠?



