GROUP_ID
構文
目的
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