В PostgreSQL функция ARRAY_AGG используется для агрегации значений в массив. Она собирает значения в одну колонку и объединяет их в массив.
Синтаксис
ARRAY_AGG(выражение [ORDER BY сортировка])
Функция принимает выражение, значения которого будут агрегироваться, и необязательное указание порядка сортировки.
Примеры использования
Агрегация значений в массив
SELECT ARRAY_AGG(name) FROM users;
Использование с ORDER BY
Можно агрегировать данные с сортировкой:
SELECT ARRAY_AGG(name ORDER BY name DESC) FROM users;
Группировка данных
При использовании с GROUP BY позволяет собирать массивы по группам:
SELECT department, ARRAY_AGG(name) FROM employees GROUP BY department;
Фильтрация NULL-значений
Функция ARRAY_AGG агрегирует NULL, но их можно исключить с помощью FILTER
:
SELECT ARRAY_AGG(name) FILTER (WHERE name IS NOT NULL) FROM users;