すべてのプロダクト
Search
ドキュメントセンター

PolarDB:GROUP_ID

最終更新日:May 24, 2024

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