Združevalne funkcije nizov SQL

Zdruzevalne Funkcije Nizov Sql



Če ste se kdaj ukvarjali z bazami podatkov SQL, ste verjetno seznanjeni z agregatnimi funkcijami. V bistvu so niz funkcij, ki izvajajo izračune na nizu vrednosti in vrnejo en sam rezultat.

Primer vključuje funkcije, kot so SUM(), AVG(), COUNT(), MAX in MIN(). Vendar pa je ena stvar, ki jo boste opazili pri agregatnih funkcijah v SQL, ta, da so usmerjene k numeričnim operacijam.

Toda ali ste vedeli, da obstajajo agregatne funkcije, ki obravnavajo vrednosti nizov? V tej vadnici si bomo ogledali te funkcije, kako delujejo in kako jih lahko uporabimo v naših zbirkah podatkov.







OPOMBA: Dobro je opozoriti, da večina funkcij, o katerih razpravljamo v tej objavi, ni del standardnega SQL. Posledično so razširitev različnih mehanizmov baz podatkov, kot so PostgreSQL, SQL Server itd.



Kaj so agregatne funkcije nizov?

Funkcije združevanja nizov so nabor funkcij, ki izvajajo operacije združevanja na nizu nizov znotraj skupine ali vrstic in vrnejo en sam rezultat.



Te funkcije večinoma uporabljamo s klavzulo GROUP BY za združevanje vrstic na podlagi določenega stolpca in nato združevanje nizov v vsaki skupini.





Nekatere običajne funkcije združevanja nizov vključujejo:

  • GROUP_CONCAT() – PostgreSQL in MySQL
  • STRING_AGG – SQL Server
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Orakelj

Raziščimo vsako funkcijo in kaj ponuja.



GROUP_CONCAT()

Funkcijo GROUP_CONCAT() podpirajo zbirke podatkov PostgreSQL in MySQL. Omogoča nam združevanje vrednosti iz več vrstic v en sam niz.

Recimo, da imamo tabelo »zaposleni«, kot sledi:

CREATE TABLE zaposleni (
Emploee_id INT AUTO_INCREMENT PRIMARY KEY,
ime VARCHAR(50),
priimek VARCHAR(50),
oddelek VARCHAR(50)
);

INSERT INTO zaposleni (ime, priimek, oddelek) VREDNOSTI
('Alice', 'Smith', 'Človeški viri'),
('Bob', 'Johnson', 'Trženje'),
('Charlie', 'Wilson', 'Finance'),
('David', 'Brown', 'Prodaja'),
('Eva', 'Davis', 'Inženiring');

Izhod:

Če želimo določiti polno ime zaposlenega tako, da vzamemo ime in združimo s priimkom, lahko uporabimo funkcijo GROUP_CONCAT(), kot je prikazano v naslednjem primeru:

IZBERI
oddelek,
GROUP_CONCAT(ime, ' ', priimek) AS polno_ime
OD
zaposlenih
ZDRUŽI PO
oddelek;

V tem primeru uporabimo funkcijo za združevanje nizov iz stolpcev “first_name” in “last_name” in prazen niz za dodajanje presledka med imena.

Ta vsebuje seznam zaposlenih v vsakem oddelku.

STRING_AGG

Ta funkcija je podobna funkciji GROUP_CONCAT(), vendar je podprta samo v bazi podatkov SQL Server.

Primer uporabe je naslednji:

IZBERI
oddelek,
STRING_AGG(ime, priimek, ' ') AS polno_ime
OD
zaposlenih
ZDRUŽI PO
oddelek;

To izvede združevanje nizov v podanih stolpcih kot presledek kot ločilo.

ARRAY_AGG

Funkcija ARRAY_AGG je na voljo samo v bazi podatkov PostgreSQL. Omogoča nam združevanje vrednosti v en sam niz.

Primer je naslednji:

IZBERI
oddelek,
ARRAY_AGG(ime) AS seznam_zaposlenih
OD
zaposlenih
ZDRUŽI PO
oddelek;

To bi moralo združiti ime zaposlenega kot niz.

LISTAGG()

Funkcija LISTAGG() je na voljo samo v bazi podatkov Oracle. Omogoča nam združevanje vrednosti v en sam niz z določenim ločilom.

Primer je naslednji:

IZBERITE oddelek, LISTAGG(ime, priimek,  ' ') ZNOTRAJ SKUPINE (VRSTI PO Emploee_name ASC) zaposleni AS
OD zaposlenih
GROUP BY oddelka;

To združuje imena zaposlenih in določeno ločilo.

Zaključek

V tej vadnici smo se naučili o združevalnih funkcijah nizov, ki nam omogočajo, da zagotovimo seznam vrednosti nizov in izvedemo operacijo v eni sami dobljeni vrednosti niza.