PostgreSQL Array Agg - Efficient Way to Aggregate Arrays
В PostgreSQL функция array_agg() используется для агрегации значений в массив. Она принимает один аргумент - выражение, которое определяет, какие значения нужно агрегировать. Результатом работы array_agg() является одномерный массив, содержащий все агрегированные значения.
Пример использования функции array_agg() выглядит следующим образом:
SELECT array_agg(name) AS names
FROM students;
В данном примере мы выбираем из таблицы students столбец name и агрегируем все его значения в массив. Результат будет выглядеть примерно так:
names
------------------
{John, Jane, Mark}
Также можно использовать функцию array_agg() совместно с группировкой данных. Например, если у нас есть таблица books с полями title и author, и нам нужно получить список всех авторов вместе с их книгами, мы можем написать следующий запрос:
SELECT author, array_agg(title) AS books
FROM books
GROUP BY author;
Этот запрос агрегирует названия всех книг каждого автора и группирует результаты по авторам. Результат будет выглядеть примерно так:
author | books
------------------+----------------------------------
George Orwell | {1984, Animal Farm}
J.R.R. Tolkien | {The Lord of the Rings, The Hobbit}
Таким образом, функция array_agg() позволяет агрегировать значения в массивы и использовать их для дальнейшей обработки или отображения.