ARRAY_AGG
Entsprechung in MySQL:
Sammelt die Werte einer Gruppe von Zeilen in einem Array.
PostgreSQL 17.9
ARRAY_AGG([DISTINCT] expression [ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]])- [ ]optionaler Teil
- a | beine der Optionen
- DISTINCT
- Nur eindeutige Werte sammelnSchlüsselwortOptional
- expression
- Ausdruck, dessen Werte im Array gesammelt werden
- ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]
- Reihenfolge der Elemente, ohne sie beliebigOptional
- sort_expression
- Spalte oder Ausdruck, nach dem sortiert wird
- ASC | DESC
- Richtung, standardmäßig ASCSchlüsselwortOptionalASCDESC
- NULLS FIRST | NULLS LAST
- Position von NULL, standardmäßig am Ende bei ASC und am Anfang bei DESCSchlüsselwortOptionalNULLS FIRSTNULLS LAST
Rückgabewert
Array von Werten desselben Typs; auch NULL-Werte landen im Array; NULL bei leerer Menge
Beispiele
Zahlen absteigend als Array
PostgreSQL 17.9
SELECT ARRAY_AGG(
n
ORDER BY n DESC
)
FROM GENERATE_SERIES(1, 5) AS n;Namen nach Status mit GROUP BY
PostgreSQL 17.9
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.
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.