構文

用途
GROUP_IDは、GROUP BY指定の結果から、重複するグループを識別します。このファンクションは、問合せ結果から重複グループを除外する場合に有効です。このファンクションは、重複グループを一意に識別するために、OracleのNUMBER値を戻します。このファンクションは、1つのGROUP BY句を含むSELECT文のみに適用できます。
特定のグループ化でn個の重複が存在する場合、GROUP_IDは0からn-1の範囲の数値を戻します。
例
次の例では、サンプル表sh.countriesおよびsh.salesの問合せの結果、重複するco.country_regionグループ化に値1を割り当てます。
SELECT co.country_region, co.country_subregion,
SUM(s.amount_sold) "Revenue", GROUP_ID() g
FROM sales s, customers c, countries co
WHERE s.cust_id = c.cust_id
AND c.country_id = co.country_id
AND s.time_id = '1-JAN-00'
AND co.country_region IN ('Americas', 'Europe')
GROUP BY GROUPING SETS ( (co.country_region, co.country_subregion),
(co.country_region, co.country_subregion) )
ORDER BY co.country_region, co.country_subregion, "Revenue", g;
COUNTRY_REGION COUNTRY_SUBREGION Revenue G
-------------------- ------------------------------ ---------- ----------
Americas Northern America 944.6 0
Americas Northern America 944.6 1
Europe Western Europe 566.39 0
Europe Western Europe 566.39 1
GROUP_IDが1より小さい行のみを戻すには、文の最後に次のHAVING句を追加します。
HAVING GROUP_ID() < 1