ARRAY_AGG
Entsprechung in MySQL:
Sammelt die Werte einer Gruppe von Zeilen in einem Array.
PostgreSQL 17.5
ARRAY_AGG([DISTINCT] expression [ORDER BY ...])Parameter
- DISTINCTSchlüsselwortoptional
- Nur eindeutige Werte sammeln
- expression
- Ausdruck, dessen Werte im Array gesammelt werden
- ORDER BYoptional
- Reihenfolge der Elemente im Array
Rückgabewert
Array von Werten desselben Typs; auch NULL-Werte landen im Array; NULL bei leerer Menge
Beispiele
Zahlen absteigend als Array
PostgreSQL 17.5
SELECT ARRAY_AGG(
n
ORDER BY n DESC
)
FROM GENERATE_SERIES(1, 5) AS n;Namen nach Status mit GROUP BY
PostgreSQL 17.5
SELECT status,
ARRAY_AGG(member_name) AS members
FROM FamilyMembers
GROUP BY status
ORDER BY status;Details
Anders als STRING_AGG überspringt ARRAY_AGG keine NULL-Werte. Ohne ORDER BY ist die Reihenfolge der Elemente nicht garantiert.
Die Elemente des Arrays werden ab 1 nummeriert: Der Ausdruck (ARRAY_AGG(member_name ORDER BY birthday))[1] gibt den Namen des ältesten Familienmitglieds zurück.