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からインクリメントされます。