Функция 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
- Удобство в формировании списков и отчётов.
- Упрощение работы с данными в отчётах и аналитике.
- Возможность сортировки и выбора уникальных значений.