Aggregate

ARRAY_AGG

PostgreSQLPostgreSQL

Mengumpulkan nilai dari beberapa baris menjadi sebuah array PostgreSQL. Berguna untuk mengumpulkan data tanpa harus mengubahnya menjadi string.

Tipe hasil: array

Syntax

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
1SELECT ARRAY_AGG(id)
2FROM products
3WHERE category = 'Electronics';

Mengumpulkan semua ID produk elektronik ke dalam satu array.

Hasil
{1, 5, 8, 12}

Array dengan ORDER BY

SQL
1SELECT
2 category,
3 ARRAY_AGG(name ORDER BY price DESC) as products_by_price
4FROM products
5GROUP BY category;

Mengelompokkan produk per kategori, dengan urutan berdasarkan harga tertinggi.

Hasil
categoryproducts_by_price
Electronics{MacBook, iPhone, AirPods}
Clothing{Jacket, T-Shirt, Cap}

Menggunakan dengan ANY Operator

SQL
1SELECT *
2FROM orders
3WHERE 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.