PostgreSQL 17.9
ARRAY_AGG([DISTINCT] expression [ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]])- [ ]parte opcional
- a | buna de las opciones
- DISTINCT
- Reunir solo los valores únicosPalabra claveOpcional
- expression
- Expresión cuyos valores se reúnen en el array
- ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]
- Orden de los elementos; sin él, el orden es arbitrarioOpcional
- sort_expression
- Columna o expresión por la que se ordena
- ASC | DESC
- Dirección, ASC por defectoPalabra claveOpcionalASCDESC
- NULLS FIRST | NULLS LAST
- Posición de NULL, por defecto al final con ASC y al principio con DESCPalabra claveOpcionalNULLS FIRSTNULLS LAST
Valor devuelto
Array de valores del mismo tipo; los NULL también entran en el array; con un conjunto vacío, NULL
Ejemplos
Números en orden descendente como array
PostgreSQL 17.9
SELECT ARRAY_AGG(
n
ORDER BY n DESC
)
FROM GENERATE_SERIES(1, 5) AS n;Nombres por estado con GROUP BY
PostgreSQL 17.9
SELECT status,
ARRAY_AGG(member_name) AS members
FROM FamilyMembers
GROUP BY status
ORDER BY status;Detalles
A diferencia de STRING_AGG, ARRAY_AGG no omite los valores NULL.
Los elementos del array se numeran desde 1: la expresión (ARRAY_AGG(member_name ORDER BY birthday))[1] devuelve el nombre del miembro de la familia de más edad.