Postgres Group_Concat

Postgres Group Concat



V MySQL je funkcia GROUP_CONCAT agregovaná funkcia, ktorá spája hodnoty z viacerých riadkov do jedného reťazca. Bežne sa používa na zbalenie viacerých riadkov do jedného riadka, pričom sa kombinujú súvisiace údaje.

PostgreSQL však na rozdiel od MySQL natívne nepodporuje funkciu group_concat(). Preto tento tutoriál skúma, ako môžeme dosiahnuť podobnú funkčnosť pomocou funkcie string_agg().

Funkcia PostgreSQL String_Agg

Funkcia string_agg v PostgreSQL nám umožňuje zreťaziť hodnoty z viacerých riadkov do jedného reťazca a je oddelená zadaným parametrom.







Použitie syntaxe funkcie je znázornené takto:



SELECT string_agg(názov_stĺpca, oddeľovač)
FROM table_name
KDE podmienky
GROUP BY zoskupenie_stĺpcov;

Nasledujúca syntax je vyjadrená takto:



názov_stĺpca – Určuje názov stĺpca, ktorého stĺpec chceme zreťaziť.





oddeľovač – Definuje oddeľovací znak, ktorý sa použije pri spájaní vstupných hodnôt.

názov_tabulky – Cieľová tabuľka, ktorá obsahuje údaje.



zoskupenie_stĺpcov – Špecifikuje stĺpce, ktoré sa používajú na zoskupenie špecifikovaných údajov.

Príklad funkcie PostgreSQL String_Agg

Uveďme si praktickejší príklad, aby sme ilustrovali, ako funkcia funguje. Predpokladajme, že máme tabuľku, ktorá obsahuje informácie o študentovi. Tabuľka obsahuje tri stĺpce: id, názov a predmet.

Ak chceme spojiť mená študentov, ktorí si zapísali rovnaký predmet, môžeme použiť funkciu string_agg.

SELECT predmet, reťazec_agg ( názov, ',' ) študenti AS
OD študentov
GROUP BY predmet;

Po spustení daného dotazu by mal vrátiť sadu výsledkov s dvoma hlavnými stĺpcami: predmet a študenti. Študenti obsahujú zreťazené mená študentov pre každý predmet a sú oddelené čiarkou.

POZNÁMKA : Funkcia string_agg štandardne triedi zreťazené hodnoty. Do funkcie string_agg môžete pridať klauzulu ORDER BY, aby ste zachovali pôvodné poradie.

Tu to máte! Priama a efektívna metóda na dosiahnutie podobnej funkčnosti, ktorú poskytuje funkcia group_concat() v PostgreSQL.

Záver

V tomto krátkom, ale efektívnom návode sme sa naučili, ako používať funkciu string_agg v PostgreSQL na dosiahnutie podobnej funkcionality, ktorú poskytuje funkcia group_concat() v MySQL.