ARRAY_AGG в PostgreSQL: агрегация в массив

В 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;