PostgreSQL 17.5
ARRAY_AGG([DISTINCT] expression [ORDER BY ...])Параметры
- DISTINCTключевое словонеобязательный
- Собирать только уникальные значения
- expression
- Выражение, значения которого собираются в массив
- ORDER BYнеобязательный
- Порядок элементов в массиве
Возвращаемое значение
Массив значений того же типа, включая NULL; для пустого набора — NULL
Примеры
Числа в массив по убыванию
PostgreSQL 17.5
SELECT ARRAY_AGG(
n
ORDER BY n DESC
)
FROM GENERATE_SERIES(1, 5) AS n;Имена по статусам с GROUP BY
PostgreSQL 17.5
SELECT status,
ARRAY_AGG(member_name) AS members
FROM FamilyMembers
GROUP BY status
ORDER BY status;Подробности
В отличие от STRING_AGG, ARRAY_AGG не пропускает NULL: такие значения тоже попадают в массив. Без ORDER BY порядок элементов не гарантирован.
Элементы массива нумеруются с 1: выражение (ARRAY_AGG(member_name ORDER BY birthday))[1] вернёт имя самого старшего члена семьи.