ROLLUPは、GROUP BYに対する拡張の1つであり、指定された属性グループの複数レベルの小計を計算できます。総計も計算できます。
ROLLUP(a, b, c) = GROUPING SETS((a,b,c), (a,b), (a), ())
たとえば、問合せでROLLUPが属性time、regionおよびdepartmentに対して指定されている場合は(n=3)、結果セットには4つの集計レベルの行が出力されます。
要約すると、ROLLUPとは、小計を必要とするタスクで使用するためのものです。
GROUP BY ROLLUP(attributeList)attributeListは単一属性か、カンマ区切りの複数属性リストです。属性は、単一割当て属性または複数割当て属性です。ROLLUPは、指定した状態を含む、コーパスで使用できます。
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 ROLLUP(Countries, States, OrderMonth)
GROUP BY expr1, ROLLUP(expr2, expr3)
この場合は、GROUP BY句によって(2+1=3)個の集計レベルでの小計が作成されます。つまり、レベル(expr1, expr2, expr3)、(expr1, expr2)および(expr1)です。
DEFINE Resellers AS SELECT ... RETURN ResellerSales AS SELECT SUM(Sales) AS TotalSales FROM Resellers GROUP BY Countries, ROLLUP(States, OrderMonth)