GROUPINGは、GROUP BYリストの中で指定された属性式が集計されたものかどうかを示します。
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;
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)
)
)