CUBE 操作是一项 OLAP 功能。OLAP 是一种组织数据的方法,它可以适应您分析和管理数据的方式,以便省时省力地生成您需要的结果集。您要预先计算报告的摘要值,这样可以加快报告计算的速度。如果要在报告中处理大量数据,CUBE 很有用。
像 ROLLUP 一样,CUBE 运算符为结果集的集合值提供小计。对变量执行 CUBE 操作时,结果集包括许多基于变量值组合的小计行。与 ROLLUP 不同的是,CUBE 可返回您在查询中指定的所有可能的变量组合。
CUBE 运算符会返回增加了数据维数信息的结果集。您可以进一步分析数据的列,这些列称为维。CUBE 提供所有可能的维组合的交叉表格报告,并生成一个结果集,该结果集显示所选列中的值的所有组合的集合。
注意当维不是同一层次的一部分时,CUBE 特别有用。 |
| 此 SQL 语法... | 定义以下集合... |
|---|---|
GROUP BY CUBE (A, B, C); |
(A, B, C)
(A, B) (A, C) (A) (B, C) (B) (C) ( ) |
有关 CUBE 查询返回的行的详细信息,请参见关于 OLAP 操作。有关在查询中使用 GROUP BY 子句的详细信息,请参见 GROUP BY 子句。
在后面的示例中,查询会返回一个结果集,该结果集汇总了订单总数,然后按年和季度计算订单数的小计。
注意随着要比较的变量数量的增加,查询返回的 CUBE 的复杂程度也会增加。 |
SELECT year (order_date) AS Year, quarter (order_date) AS Quarter, COUNT (*) AS Orders FROM sales_order GROUP BY CUBE (Year, Quarter) ORDER BY Year, Quarter
下面的表是查询的结果集。在结果集中突出显示小计行。每一小计行在计算小计的列中的值为 NULL。
第一个突出显示的行 [1] 表示两年和所有季度内的订单总数。Orders 列中的值是每个标有 [3] 的行中的值的总和。它也是标有 [2] 的行中的四个值的总和。
注意所有 CUBE 操作返回的结果集均至少有一行在除集合列以外的每个列中显示 NULL。该行表示对执行集合函数的每一列的汇总。 |
下一组突出显示的行 [2] 按季度表示两年内的订单总数。后面的标有 [3] 的两行分别表示 2000 年和 2001 年中所有季度的订单总数。
CUBE 操作等效于包括所有可能的变量组合的 GROUPING SETS 查询。
| 此 CUBE 查询... | 等效于没有 CUBE 的此查询... |
|---|---|
SELECT A, B, C, SUM( D ) FROM t GROUP BY CUBE( A, B, C) |
SELECT A, B, C,
SUM( D )
FROM t
GROUP BY GROUPING SETS(
( A, B, C ),
( A, B ), ( A ), ( B, C ),
( B ), ( A, C ), ( C ),
() )
|
有关在前面的 SQL 查询中使用的 GROUPING SETS 语法的信息,请参见使用 GROUPING SETS。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。