GROUPING SETS式を使用すると、GROUP BY句の中で作成するグループのセットを選択して指定できます。
GROUPING SETSは、1つの問合せの中でデータのグルーピングを複数指定するものです。CUBEまたはROLLUPによって生成される集計全体ではなく、指定されたグループのみが集計されます。GROUPING SETSには、1つの要素または要素のリストを指定できます。GROUPING SETSで指定できるグルーピングは、ROLLUPやCUBEによって返されるものと等価です。
GROUPING SETS(groupingSetList)groupingSetListは、単一属性、カンマ区切りの複数属性リスト、CUBEまたはROLLUPです。()を指定すると、空のグループを指定したことになります。空のグループを指定すると、合計が生成されます。グルーピング・セットのネストは許可されません。
GROUP BY GROUPING SETS(a, (b), (c, d), ())
GROUP BY a, GROUPING SETS(b, c), GROUPING SETS((d, e))これは、次のものと等価です。
GROUP BY GROUPING SETS((a, b, d, e),(a, c, d, e))
GROUP = GROUP BY() = GROUP BY GROUPING SETS(())
GROUP BY GROUPING SETS ((x), (x)) GROUP BY GROUPING SETS ((x)))
DEFINE ResellerSales AS SELECT SUM(DimReseller_AnnualSales) AS TotalSales, ARB(DimReseller_ResellerName) AS RepNames, DimReseller_OrderMonth AS OrderMonth FROM ResellerState GROUP BY OrderMonth; RETURN MonthlySales AS SELECT AVG(TotalSales) AS AvgSalesPerRep FROM ResellerSales GROUP BY TotalSales, GROUPING SETS(RepNames), GROUPING SETS(OrderMonth)