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) ) )