STRING_AGG в PostgreSQL: агрегация строк

Функция STRING_AGG в PostgreSQL используется для объединения значений нескольких строк в одну строку с указанным разделителем. Она удобна при формировании списков и группировке значений.

Синтаксис STRING_AGG

Стандартный синтаксис функции выглядит следующим образом:

STRING_AGG(expression, separator);
  • expression – выражение или столбец, значения которого будут объединяться.
  • separator – символ или строка, используемые для разделения объединяемых значений.

Примеры использования STRING_AGG

Простой пример агрегации строк

Объединение значений из нескольких строк в одну строку через запятую:

SELECT STRING_AGG(product_name, ', ') AS product_list
FROM products;

В результате запроса получится одна строка со всеми названиями продуктов, разделёнными запятыми.

Агрегация с группировкой

Использование функции STRING_AGG совместно с оператором GROUP BY:

SELECT category, STRING_AGG(product_name, ', ') AS products_in_category
FROM products
GROUP BY category;

Этот запрос вернёт список продуктов, объединённых по категориям.

Агрегация с сортировкой

Функция позволяет сортировать значения перед объединением:

SELECT category, STRING_AGG(product_name, ', ' ORDER BY product_name) AS sorted_products
FROM products
GROUP BY category;

Значения будут отсортированы в алфавитном порядке.

Использование STRING_AGG с DISTINCT

Функция может использоваться для объединения только уникальных значений:

SELECT STRING_AGG(DISTINCT city, ', ') AS unique_cities
FROM customers;

В этом случае будут агрегированы только уникальные названия городов.

Преимущества использования STRING_AGG

  • Удобство в формировании списков и отчётов.
  • Упрощение работы с данными в отчётах и аналитике.
  • Возможность сортировки и выбора уникальных значений.