Referencia de funciones

ARRAY_AGG

Equivalente en MySQL:

Reúne los valores de un grupo de filas en un array.

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 únicos
Palabra 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 arbitrario
Opcional
sort_expression
Columna o expresión por la que se ordena
ASC | DESC
Dirección, ASC por defecto
Palabra claveOpcional
ASCDESC
NULLS FIRST | NULLS LAST
Posición de NULL, por defecto al final con ASC y al principio con DESC
Palabra claveOpcional
NULLS 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;
array_agg
[5,4,3,2,1]

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;
statusmembers
daughter["Lela Quincey","Annie Quincey","Wednesday Addams"]
father["Headley Quincey","Ernest Forrest"]
mother["Flavia Quincey","Constance Forrest"]
son["Andie Quincey"]

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.

Véase también