All Products
Search
Document Center

PolarDB:GROUP_ID

Last Updated:Mar 29, 2026

GROUP_ID() memberikan nomor urut pada setiap kelompok duplikat yang dihasilkan oleh ekstensi GROUP BY, seperti ROLLUP, CUBE, dan GROUPING SETS. Fungsi ini digunakan untuk mengidentifikasi dan menyaring kelompok duplikat dalam kueri agregasi yang kompleks.

Deskripsi

Ekstensi GROUP BY dapat menghasilkan pengelompokan duplikat dalam satu set hasil. GROUP_ID() mengembalikan nilai INTEGER yang memberi nomor setiap kemunculan kelompok duplikat, dimulai dari 0. Jika suatu kelompok muncul sebanyak *n* kali, kemunculannya akan diberi nilai 0 hingga n-1.

GROUP_ID() hanya berlaku untuk pernyataan SELECT yang mengandung klausa GROUP BY.

OccurrenceGROUP_ID value
First0
Second1
Third2
......

Contoh

Contoh-contoh berikut menggunakan tabel berikut:

 a | b | c
---+---+---
 1 | 2 | 3

Tidak ada kelompok duplikat

GROUP BY ROLLUP(a, b, c) menghasilkan empat kelompok berbeda: (a, b, c), (a, b), (a), dan (). Tidak terdapat duplikat, sehingga nilai GROUP_ID() adalah 0 untuk semua baris.

SELECT a, b, c, grouping(a, b, c), group_id()
FROM t
GROUP BY ROLLUP(a, b, c)
ORDER BY grouping(a, b, c);

Hasil:

 a | b | c | grouping | group_id
---+---+---+----------+----------
 1 | 2 | 3 |        0 |        0
 1 | 2 |   |        1 |        0
 1 |   |   |        3 |        0
   |   |   |        7 |        0
(4 rows)

Kelompok duplikat

GROUP BY ROLLUP(a, b, c), a, b menghasilkan empat baris yang sama, tetapi penambahan a, b ke dalam klausa GROUP BY menyebabkan kelompok (a, b) muncul tiga kali. GROUP_ID() memberi nomor pada duplikat tersebut sebagai 0, 1, dan 2.

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);

Hasil:

 a | b | c | grouping | group_id
---+---+---+----------+----------
 1 | 2 | 3 |        0 |        0
 1 | 2 |   |        1 |        0
 1 | 2 |   |        1 |        1
 1 | 2 |   |        1 |        2
(4 rows)