SQL stringi koondfunktsioonid

Sql Stringi Koondfunktsioonid



Kui olete kunagi SQL-andmebaasidega tegelenud, tunnete tõenäoliselt koondfunktsioone. Need on sisuliselt funktsioonide komplekt, mis teostab arvutusi väärtuste kogumi põhjal ja tagastab ühe tulemuse.

Näide sisaldab selliseid funktsioone nagu SUM(), AVG(), COUNT(), MAX ja MIN(). Kuid üks asi, mida SQL-i koondfunktsioonide puhul märkate, on see, et need on suunatud numbrilistele operatsioonidele.

Kuid kas teadsite, et on olemas koondfunktsioonid, mis käsitlevad stringiväärtusi? Selles õpetuses vaatleme neid funktsioone, kuidas need töötavad ja kuidas saame neid oma andmebaasides kasutada.







MÄRKUS. On hea märkus, et enamik selles postituses käsitletavaid funktsioone ei kuulu standardse SQL-i. Selle tulemusena on need laiendused erinevatele andmebaasimootoritele, nagu PostgreSQL, SQL Server jne.



Mis on stringi koondfunktsioonid?

Stringi koondfunktsioonid on funktsioonide kogum, mis täidab grupi või ridade stringide komplekti liitmistoiminguid ja tagastab ühe tulemuse.



Peamiselt kasutame neid funktsioone koos klausliga GROUP BY, et rühmitada ridu kindla veeru alusel ja seejärel iga rühma stringid koondada.





Mõned levinumad stringide koondamisfunktsioonid on järgmised:

  • GROUP_CONCAT() – PostgreSQL ja MySQL
  • STRING_AGG – SQL-server
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Oraakel

Uurime iga funktsiooni ja seda, mida see pakub.



GROUP_CONCAT()

Funktsiooni GROUP_CONCAT() toetavad PostgreSQL ja MySQL andmebaasid. See võimaldab meil liita mitme rea väärtused üheks stringiks.

Oletame, et meil on järgmine 'töötajate' tabel:

CREATE TABLE töötajad (
töötaja_id INT AUTO_INCREMENT PRIMARY KEY,
eesnimi VARCHAR(50),
perekonnanimi VARCHAR(50),
osakond VARCHAR(50)
);

INSERT INTO töötajad (eesnimi, perekonnanimi, osakond) VÄÄRTUSED
('Alice', 'Smith', 'Inimressursid'),
('Bob', 'Johnson', 'turundus'),
('Charlie', 'Wilson', 'Finants'),
('Taavet', 'pruun', 'müük'),
('Eva', 'Davis', 'Inseneritöö');

Väljund:

Kui soovime määrata töötaja täisnime, võttes eesnime ja liites perekonnanimega, saame kasutada funktsiooni GROUP_CONCAT(), nagu on näidatud järgmises näites:

VALI
osakond,
GROUP_CONCAT(eesnimi, ' ', perekonnanimi) AS täisnimi
FROM
töötajad
GROUP BY
osakond;

Sel juhul kasutame funktsiooni 'eesnimi' ja 'perekonnanimi' veergude stringide ühendamiseks ning tühja stringi, et lisada nimedele tühik.

See sisaldab iga osakonna töötajate nimekirja.

STRING_AGG

See funktsioon on sarnane funktsiooniga GROUP_CONCAT(), kuid seda toetab ainult SQL Serveri andmebaas.

Kasutamise näide on järgmine:

VALI
osakond,
STRING_AGG(eesnimi, perekonnanimi, ' ') AS täisnimi
FROM
töötajad
GROUP BY
osakond;

See teostab määratud veergude stringide ühendamise ruumina eraldajana.

ARRAY_AGG

Funktsioon ARRAY_AGG on saadaval ainult PostgreSQL-i andmebaasis. See võimaldab meil koondada väärtused ühte massiivi.

Näide on järgmine:

VALI
osakond,
ARRAY_AGG(eesnimi) AS töötajate_loend
FROM
töötajad
GROUP BY
osakond;

See peaks koondama töötaja nime massiivina.

LISTAGG()

Funktsioon LISTAGG() on saadaval ainult Oracle'i andmebaasis. See võimaldab meil liita väärtused kindlaks määratud eraldajaga üheks stringiks.

Näide on järgmine:

VALI osakond, LISTAGG(eesnimi, perekonnanimi,  ' ') GRUPIS (ORDER BY töötaja_nimi ASC) AS töötajad
töötajatelt
GROUP BY osakonna järgi;

See ühendab töötajate nimed ja määratud eraldaja.

Järeldus

Selles õpetuses õppisime tundma stringi koondfunktsioone, mis võimaldavad meil esitada stringiväärtuste loendi ja sooritada toimingu üheks saadud stringiväärtuseks.