CUBE
は指定された属性セットを取り、それらが取り得るすべての組合せに対して小計を作成します。
n属性がCUBE
に指定されている場合、返される小計のnの組合せには2つあります。
CUBE
(ROLLUP
など)は、GROUPING SETS
の構文上の文字です:
CUBE(a, b, c) = GROUPING SETS((a,b,c), (a,b), (a,c), (b,c), (a), (b), (c), ())
CUBE構文
CUBE
は、次の構文を使用してGROUP BY
句に記述されます:
GROUP BY CUBE(attributeList)
ここで、attributeListは、1つの属性または複数の属性のカンマ区切りリストです。 属性は、単一割当て属性または複数割当て属性の場合があります。 CUBE
は、コレクションに対して使用できます。
CUBEの例
CUBE
を使用することを除き、ROLLUP
の例とよく似ています:
DEFINE Resellers AS SELECT DimReseller_AnnualSales AS Sales, DimGeography_CountryRegionName AS Countries, DimGeography_StateProvinceName AS States, DimReseller_OrderMonth AS OrderMonth FROM ResellerState WHERE DimReseller_OrderMonth IS NOT NULL; RETURN ResellerSales AS SELECT SUM(Sales) AS TotalSales FROM Resellers GROUP BY CUBE(Countries, States, OrderMonth)
部分的CUBE
部分的なCUBE
は、特定の属性に制限して、CUBE
演算子の外部の属性を前に配置できる部分的なROLLUP
と似ています。 この場合、可能なすべての組合せの小計は、キューブ・リスト内の属性に制限され(カッコ内)、GROUP BY
リスト内の先行するアイテムと結合されます。
CUBE
の構文は、次のとおりです:
GROUP BY expr1, CUBE(expr2, expr3)
CUBE
のGROUP BY
句は次のようになります:
DEFINE Resellers AS SELECT ... RETURN ResellerSales AS SELECT SUM(Sales) AS TotalSales FROM Resellers GROUP BY Countries, CUBE(States, OrderMonth)