Postgres Group_Concat

Postgres Group Concat



В MySQL функцията GROUP_CONCAT е обобщена функция, която обединява стойностите от множество редове в един низ. Обикновено се използва за свиване на множество редове в един ред, комбинирайки свързани данни.

PostgreSQL обаче не поддържа първоначално функцията group_concat() за разлика от MySQL. Ето защо този урок изследва как можем да постигнем подобна функционалност с помощта на функцията string_agg().

Функция PostgreSQL String_Agg

Функцията string_agg в PostgreSQL ни позволява да свържем стойностите от множество редове в един низ и е разделен от посочения параметър.







Използването на синтаксиса на функцията е показано, както следва:



ИЗБЕРЕТЕ string_agg(име_на_колона, разделител)
ОТ име_таблица
КЪДЕ условия
ГРУПИРАНЕ ПО grouping_columns;

Следният синтаксис е изразен по следния начин:



име_на_колона – Указва името на колоната, чиято колона искаме да свържем.





разделител – Определя разделителния знак, който се използва при свързване на входните стойности.

име_на_таблица – Целевата таблица, която съдържа данните.



групиране_колони – Указва колоните, които се използват за групиране на посочените данни.

Пример за функция String_Agg на PostgreSQL

Нека вземем по-практичен пример, за да илюстрираме как работи функцията. Да предположим, че имаме таблица, която съдържа информацията за студентите. Таблицата съдържа три колони: идентификатор, име и тема.

Ако искаме да свържем имената на студентите, които са се записали по същия предмет, можем да използваме функцията string_agg.

ИЗБЕРЕТЕ тема, string_agg ( име, ',' ) AS студенти
ОТ студенти
ГРУПИРАНЕ ПО предмет;

След като изпълним дадената заявка, тя трябва да върне набор от резултати с две основни колони: предмет и ученици. Учениците съдържат свързаните имена на ученици за всеки предмет и са разделени със запетая.

ЗАБЕЛЕЖКА : Функцията string_agg сортира свързаните стойности по подразбиране. Можете да добавите клауза ORDER BY във функцията string_agg, за да поддържате оригиналния ред.

Ето го! Прост и ефективен метод за постигане на подобна функционалност, предоставена от функцията group_concat() в PostgreSQL.

Заключение

В този кратък, но ефективен урок научихме как да използваме функцията string_agg в PostgreSQL, за да постигнем подобна функционалност, предоставена от функцията group_concat() в MySQL.