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(())
SELECT SUM(PROD_NAME) AS Products GROUP BY PROD_LIST_PRICE, PROD_LIST_PRICE SELECT SUM(PROD_NAME) AS Products GROUP BY PROD_LIST_PRICE
GROUP BY GROUPING SETS((COUNTRY_TOTAL), (COUNTRY_TOTAL))COUNTRY_TOTALグループが2つ生成されます。
GROUP BY GROUPING SETS((COUNTRY_TOTAL, COUNTRY_TOTAL))1つのCOUNTRY_TOTALグループのみが生成されます。両方の属性が同じグルーピング・セット内にあるからです。
DEFINE ResellerSales AS SELECT SUM(DimReseller_AnnualSales) AS TotalSales, ARB(DimReseller_ResellerName) AS RepNames, DimReseller_OrderMonth AS OrderMonth GROUP BY OrderMonth; RETURN MonthlySales AS SELECT AVG(TotalSales) AS AvgSalesPerRep FROM ResellerSales GROUP BY TotalSales, GROUPING SETS(RepNames), GROUPING SETS(OrderMonth)