GROUPINGヘルパー関数は、GROUP BYリストの中で指定された属性式が集計されたものかどうかを示します。
GROUPINGはGROUPING SETS、CUBEおよびROLLUPのヘルパー関数です。GROUPINGは、WHERE句、結合条件、集計関数またはグルーピング属性定義の中で使用できません。
GROUPING関数を使用すると、このような問題に対処できます。
GROUPINGを使用する目的は、ROLLUP、CUBEまたはGROUPING SETSで返されたNULL値と標準のNULL値とを区別することです。ROLLUP、CUBEまたはGROUPING SETS操作の結果として返されるNULLは、NULLの特殊な使用法です。これには、結果セット内の列プレースホルダとしての働きがあり、すべての値を意味します。
GROUPINGがTRUEを返すのは、ROLLUP、CUBEまたはGROUPING SETS操作で作成されたNULL値が見つかったときです。つまり、行が小計であることをNULLが示している場合は、GROUPINGがTRUEを返します。その他のタイプの値(格納されたNULLも含まれる)の場合は、FALSEが返されます。
したがって、GROUPINGを利用すると、結果セットのどの行が小計であるかをプログラム的に判断でき、特定の小計の集計レベルを正確に知りたいときにも役立ちます。
GROUPING(attribute)attributeは単一の属性です。
DEFINE r AS SELECT DimReseller_AnnualRevenue AS Revenue, DimReseller_AnnualSales AS Sales, DimReseller_OrderMonth AS OrderMonth FROM SaleState; RETURN results AS SELECT COUNT(1) AS COUNT, GROUPING(Revenue) AS grouping_Revenue, GROUPING(Sales) AS grouping_Sales, GROUPING(OrderMonth) AS grouping_OrderMonth FROM r GROUP BY GROUPING SETS ( ROLLUP( (Revenue), (Sales), (OrderMonth) ) )