Aggregate
PostgreSQL
ARRAY_AGG
Mengumpulkan nilai dari beberapa baris menjadi sebuah array PostgreSQL. Berguna untuk mengumpulkan data tanpa harus mengubahnya menjadi string.
Tipe hasil:
arraySyntax
SQL
ARRAY_AGG(expression [ORDER BY sort_expression])Parameter
expressionanywajib
Kolom atau ekspresi yang akan dikumpulkan ke dalam array
ORDER BYclauseopsional
Opsional. Menentukan urutan elemen dalam array
Contoh Penggunaan
Mengumpulkan ID ke dalam Array
SQL
1 SELECT ARRAY_AGG(id) 2 FROM products 3 WHERE category = 'Electronics';
Mengumpulkan semua ID produk elektronik ke dalam satu array.
Hasil
{1, 5, 8, 12}
Array dengan ORDER BY
SQL
1 SELECT 2 category, 3 ARRAY_AGG(name ORDER BY price DESC) as products_by_price 4 FROM products 5 GROUP BY category;
Mengelompokkan produk per kategori, dengan urutan berdasarkan harga tertinggi.
Hasil
| category | products_by_price |
|---|---|
| Electronics | {MacBook, iPhone, AirPods} |
| Clothing | {Jacket, T-Shirt, Cap} |
Menggunakan dengan ANY Operator
SQL
1 SELECT * 2 FROM orders 3 WHERE product_id = ANY( 4 SELECT ARRAY_AGG(id) 5 FROM products 6 WHERE on_sale = true 7 );
Mencari orders yang product_id-nya ada dalam array produk yang sedang diskon.