SQL – ARRAY_AGG

Funkcje agregujące np. SUM, MIN użyte razem z klauzulą GROUP BY są bardzo przydatne do wyznaczania skumulowanych wartości liczbowych. Co jednak, jeśli chcemy w jednym wierszu wyznaczyć po przecinku wartości liczbowe lub tekstowe, które występują w danej grupie? Z pomocą przychodzi funkcja ARRAY_AGG, która agreguje zarówno wartości liczbowe, jak i tekstowe:

SELECT product_group, ARRAY_AGG (product_price) as prices FROM PRODUCTS GROUP BY product_group

Powyższy kod zwraca grupy produktów, wraz z ich cenami w jednym wierszu.

Zagregowane wartości cen można posortować:

ARRAY_AGG (product_price order by product_price desc)

W jednej wynikowej kolumnie możemy też zagregować więcej niż jedną kolumnę:

ARRAY_AGG (product_price || ‘ ‘ || product_quantity order by product_price desc)