GROUPING_ID関数

GROUPING_ID関数は、特定の行のGROUP BYレベルを計算します。

GROUPING_ID関数からは1つの数値のみが返されるので、これを使用して正確なGROUP BYレベルを特定できます。行ごとに、GROUPING_IDは1と0からなるセットを受け取ります。この1と0は、該当するGROUPING関数を使用した場合に生成されるものであり、連結されてビット・ベクトルを形成します。このビット・ベクトルは2進数として扱われ、GROUPING_ID関数はこの数値の10進値を戻します。

たとえば、CUBE(a, b)という式でグルーピングする場合に、考えられる値は次のとおりです。
集計レベル ビット・ベクトル GROUPING_ID
a,b 0 0 0
a 0 1 1
b 1 0 2
総計 1 1 3

GROUPING_IDの構文

GROUPING_IDの構文は次のとおりです。
GROUPING_ID(attributeList)
attributeListは単一属性か、1-63個の属性のカンマ区切りリストです。

GROUPING_IDの例

DEFINE r AS SELECT
  DimReseller_AnnualRevenue AS Revenue,
  DimReseller_AnnualSales AS Sales;

RETURN results AS SELECT
  COUNT(1) AS COUNT,
  GROUPING_ID(Revenue) AS gid_Revenue,
  GROUPING_ID(Sales) AS gid_Sales
FROM r
GROUP BY CUBE(Revenue,Sales)