Postgres Group_Concat

Postgres Group Concat



V MySQL je funkcija GROUP_CONCAT agregatna funkcija, ki združuje vrednosti iz več vrstic v en sam niz. Običajno se uporablja za strnitev več vrstic v eno vrstico in združevanje povezanih podatkov.

Vendar pa PostgreSQL izvorno ne podpira funkcije group_concat() za razliko od MySQL. Zato ta vadnica raziskuje, kako lahko dosežemo podobno funkcionalnost s funkcijo string_agg().

Funkcija PostgreSQL String_Agg

Funkcija string_agg v PostgreSQL nam omogoča združevanje vrednosti iz več vrstic v en sam niz in je ločen z navedenim parametrom.







Uporaba sintakse funkcije je prikazana na naslednji način:



IZBERI string_agg(ime_stolpca, ločilo)
FROM ime_tabele
pogoji KJE
GROUP BY grouping_columns;

Naslednja sintaksa je izražena takole:



ime_stolpca – Določa ime stolpca, katerega stolpec želimo združiti.





ločilo – Določa ločilni znak, ki se uporablja pri združevanju vhodnih vrednosti.

ime_tabele – Ciljna tabela, ki vsebuje podatke.



združevanje_stolpcev – Podaja stolpce, ki se uporabljajo za združevanje navedenih podatkov.

Primer funkcije PostgreSQL String_Agg

Vzemimo bolj praktičen primer za ponazoritev delovanja funkcije. Recimo, da imamo tabelo, ki vsebuje informacije o študentih. Tabela vsebuje tri stolpce: id, ime in predmet.

Če želimo združiti imena študentov, ki so se vpisali na isti predmet, lahko uporabimo funkcijo string_agg.

IZBERI predmet, string_agg ( ime, ',' ) študenti AS
OD študentov
GROUP BY predmet;

Ko zaženemo dano poizvedbo, bi morala vrniti niz rezultatov z dvema glavnima stolpcema: predmetom in študenti. Dijaki vsebujejo povezana imena dijakov za vsak predmet in so ločena z vejico.

OPOMBA : Funkcija string_agg privzeto razvrsti povezane vrednosti. V funkcijo string_agg lahko dodate klavzulo ORDER BY, da ohranite prvotni vrstni red.

Tukaj imaš! Preprosta in učinkovita metoda za doseganje podobne funkcionalnosti, ki jo zagotavlja funkcija group_concat() v PostgreSQL.

Zaključek

V tej kratki, a učinkoviti vadnici smo se naučili, kako uporabiti funkcijo string_agg v PostgreSQL, da dosežemo podobno funkcionalnost, ki jo nudi funkcija group_concat() v MySQL.