Функция LISTAGG в Oracle преобразует данные из нескольких строк в единый список значений, разделённых указанным разделителем. 2 Обычно её используют для денормализации значений из нескольких строк в одно, которое может быть списком значений, разделённых запятыми (CSV), или другим удобным для чтения человеком форматом. 24
В PostgreSQL для агрегирования строк, подобно LISTAGG в Oracle, есть две функции: STRINGAGG и ARRAYAGG. 2 Они не охватывают все возможности LISTAGG, но предоставляют базовые функции агрегирования строк. 2
STRINGAGG имеет ограниченную функциональность и не покрывает обработку ошибки «результат конкатенации слишком длинный». 2 ARRAYAGG можно использовать для агрегирования строк, но затем нужно выполнить дополнительный вызов функции ARRAYTOSTRING, чтобы преобразовать результат агрегирования из ARRAY в STRING. 2 При большом наборе результатов агрегирования использование ARRAYAGG может привести к снижению производительности, поэтому рекомендуется использовать STRINGAGG. 2