CUBEは、指定された属性セットから、考えられるすべての組合せについて小計を作成します。
1つのCUBEに対してn個の属性が指定された場合に、返される小計の組合せの数は2のn乗になります。
CUBE(a, b, c) = GROUPING SETS((a,b,c), (a,b), (a,c), (b,c), (a), (b), (c), ())
GROUP BY CUBE(attributeList)attributeListは単一属性か、カンマ区切りの複数属性リストです。
DEFINE Resellers AS SELECT DimReseller_AnnualSales AS Sales, DimGeography_CountryRegionName AS Countries, DimGeography_StateProvinceName AS States, DimReseller_OrderMonth AS OrderMonth WHERE DimReseller_OrderMonth IS NOT NULL; RETURN ResellerSales AS SELECT SUM(Sales) AS TotalSales FROM Resellers GROUP BY CUBE(Countries, States, OrderMonth)
部分的CUBEは、部分的ROLLUPによく似ています。特定の属性のみに制限でき、その前にCUBE演算子には含まれない属性を指定できるからです。この場合は、キューブ・リスト(カッコで囲まれている)で指定された属性に限定して、すべての考えられる組合せの小計が計算され、その小計はGROUP BYリストの中の先行するアイテムと結合されます。
GROUP BY expr1, CUBE(expr2, expr3)
DEFINE Resellers AS SELECT ... RETURN ResellerSales AS SELECT SUM(Sales) AS TotalSales FROM Resellers GROUP BY Countries, CUBE(States, OrderMonth)