Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Klausa GROUP BY
Klausa GROUP BY mengidentifikasi kolom pengelompokan untuk kueri. Ini digunakan untuk mengelompokkan baris dalam tabel yang memiliki nilai yang sama di semua kolom yang tercantum. Urutan kolom terdaftar tidak masalah. Hasilnya adalah menggabungkan setiap set baris yang memiliki nilai umum ke dalam satu baris grup yang mewakili semua baris dalam grup. Gunakan GROUP BY untuk menghilangkan redundansi dalam output dan untuk menghitung agregat yang berlaku untuk grup. Kolom pengelompokan harus dideklarasikan ketika kueri menghitung agregat dengan fungsi standar seperti SUM, AVG, dan COUNT. Untuk informasi selengkapnya, lihat Fungsi agregat.
Sintaks
[ GROUP BY expression [, ...] | ALL | aggregation_extension ]
dimana aggregation_extension adalah salah satu dari berikut ini:
GROUPING SETS ( () | aggregation_extension [, ...] ) | ROLLUP ( expr [, ...] ) | CUBE ( expr [, ...] )
Parameter
- ekspresi
-
Daftar kolom atau ekspresi harus cocok dengan daftar ekspresi non-agregat dalam daftar kueri yang dipilih. Misalnya, pertimbangkan kueri sederhana berikut.
select listid, eventid, sum(pricepaid) as revenue, count(qtysold) as numtix from sales group by listid, eventid order by 3, 4, 2, 1 limit 5; listid | eventid | revenue | numtix -------+---------+---------+-------- 89397 | 47 | 20.00 | 1 106590 | 76 | 20.00 | 1 124683 | 393 | 20.00 | 1 103037 | 403 | 20.00 | 1 147685 | 429 | 20.00 | 1 (5 rows)Dalam kueri ini, daftar pilih terdiri dari dua ekspresi agregat. Yang pertama menggunakan fungsi SUM dan yang kedua menggunakan fungsi COUNT. Dua kolom yang tersisa, LISTID dan EVENTID, harus dinyatakan sebagai kolom pengelompokan.
Ekspresi dalam klausa GROUP BY juga dapat mereferensikan daftar pilih dengan menggunakan nomor ordinal. Misalnya, contoh sebelumnya dapat disingkat sebagai berikut.
select listid, eventid, sum(pricepaid) as revenue, count(qtysold) as numtix from sales group by 1,2 order by 3, 4, 2, 1 limit 5; listid | eventid | revenue | numtix -------+---------+---------+-------- 89397 | 47 | 20.00 | 1 106590 | 76 | 20.00 | 1 124683 | 393 | 20.00 | 1 103037 | 403 | 20.00 | 1 147685 | 429 | 20.00 | 1 (5 rows) - SEMUA
-
SEMUA menunjukkan untuk mengelompokkan oleh semua kolom yang ditentukan dalam daftar SELECT kecuali yang digabungkan. Misalnya, pertimbangkan kueri berikut yang mengelompokkan dengan
col1dancol2tanpa harus menentukannya secara individual dalam klausa GROUP BY. Kolomcol3adalah argumenSUMfungsi dan dengan demikian tidak dikelompokkan.SELECT col1, col2 sum(col3) FROM testtable GROUP BY ALLJika Anda MENGECUALIKAN kolom dalam daftar SELECT, klausa GROUP BY ALL tidak mengelompokkan hasil berdasarkan kolom tertentu.
SELECT * EXCLUDE col3 FROM testtable GROUP BY ALL - ekstensi_agregasi
-
Anda dapat menggunakan ekstensi agregasi GROUPING SETS, ROLLUP, dan CUBE untuk melakukan pekerjaan beberapa operasi GROUP BY dalam satu pernyataan. Untuk informasi selengkapnya tentang ekstensi agregasi dan fungsi terkait, lihatEkstensi agregasi.
Contoh
Contoh berikut menggunakan tabel SALES yang berisi kolom: salesid, listid, sellerid, buyerid, eventid, dateid, qtysold, pricepaid, commission, dan saletime. Untuk informasi selengkapnya tentang tabel PENJUALAN, lihatDatabase sampel.
Contoh kueri berikut mengelompok salesid kan oleh dan listid tanpa harus menentukannya secara individual dalam klausa GROUP BY. Kolom qtysold adalah argumen SUM fungsi dan dengan demikian tidak dikelompokkan.
SELECT salesid, listid, sum(qtysold) FROM sales GROUP BY ALL;salesid | listid | sum --------+---------+------ 33095 | 36572 | 2 88268 | 100813 | 4 110917 | 127048 | 1 ...
Contoh kueri berikut mengecualikan beberapa kolom dalam daftar SELECT, jadi GROUP BY ALL hanya mengelompokkan salesid dan listid.
SELECT * EXCLUDE sellerid, buyerid, eventid, dateid, qtysold, pricepaid, commission, saletime FROM sales GROUP BY ALL;salesid | listid --------+--------- 33095 | 36572 88268 | 100813 110917 | 127048 ...