GROUPINGヘルパー機能は、GROUP BYリスト内の指定された属性式が集約されているかどうかを示します。
GROUPINGは、GROUPING SETS、CUBEおよびROLLUPの支援機能です。 GROUPINGは、WHERE句、結合条件、集計関数内、またはグループ化属性の定義では使用できないことに注意してください。
ROLLUPおよびCUBEを使用すると、次の2つの困難な問題が発生することがあります:
ROLLUPまたはCUBEによって作成された格納済のNULL値およびNULL値の両方が含まれる場合はどうなりますか。 2つを区別するにはどうすればよいですか。
GROUPING関数でこれらの問題を処理できます。
GROUPINGは、ROLLUP、CUBE、またはGROUPING SETSによって返されるNULL値を標準のNULL値と区別するために使用されます。 ROLLUP、CUBEまたはGROUPING SETSの操作の結果として返されるNULLは、NULLの特殊な使用方法です。 これは結果セット内の列プレースホルダーとして機能し、すべての値を意味します。
ROLLUP、CUBEまたはGROUPING SETSの操作で作成されたNULL値を検出すると、GROUPINGではTRUEが返されます。 つまり、NULLが小計の行であることを示す場合、GROUPINGはTRUEを返します。 その他のタイプの値(格納されたNULLを含む)では、FALSEを戻します。
これにより、GROUPINGでは小計の結果セット行をプログラム上で決定できるため、指定された小計の正確な小計レベルを確認するのに役立ちます。
GROUPING構文
GROUPING構文は、次のとおりです:
GROUPING(attribute)
ここで、「属性」は単一の属性です。
GROUPINGの例
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)
)
)