GROUP_ID関数は、重複するグループを区別します。
説明
クエリ結果に重複グループが含まれている場合は、GROUP_ID関数を使用してこれらの重複グループを区別できます。 GROUP_ID関数は、重複するグループを区別するためにINTEGERデータ型の一意のIDを返します。
特定のグループにn個の重複がある場合、GROUP_IP関数は0からn-1の範囲の数値を返します。
説明 この関数は、GROUP BY句のみを含むSELECTステートメントに適用できます。
例
この例では、次の表を使用します。
a | b | c
--- ---- -----
1 | 2 | 3 group by rollup(a, b, c) 句を使用してデータをグループ化すると、a, b, c、(a, b)、(a)、()の4つのグループが生成されます。SELECT a, b, c, grouping(a, b, c), group_id() FROM t group by rollup(a, b, c) order by grouping(a, b, c);次の応答が返されます。
a | b | c | grouping | group_id --- ---- ----------- -------------------- 1 | 2 | 3 | 0 | 0 1 | 2 | | 1 | 0 1 | | | 3 | 0 | | | 7 | 0 (4行)group by rollup(a, b, c), a, b句を使用してデータをグループ化すると、4つのグループが生成されます。 4つのグループは、3つの重複グループ(a、b)を含む。SELECT a, b, c, grouping(a, b, c), group_id() FROM t group by rollup(a, b, c), a, b order by grouping(a, b, c);次の応答が返されます。
a | b | c | grouping | group_id --- ---- ----------- -------------------- 1 | 2 | 3 | 0 | 0 1 | 2 | | 1 | 0 1 | 2 | | 1 | 1 1 | 2 | | 1 | 2 (4行)
グループが初めて生成される場合、このグループのGROUP_IDの値は0です。 このグループに重複が生成された場合、重複グループのGROUP_IDの値は1からインクリメントされます。