Un exemplu include funcții precum SUM(), AVG(), COUNT(), MAX și MIN(). Cu toate acestea, un lucru pe care îl veți observa despre funcțiile agregate din SQL este că acestea sunt orientate către operații numerice.
Dar știați că există funcții agregate care se ocupă de valorile șirurilor? În acest tutorial, ne vom uita la aceste funcții, cum funcționează și cum le putem folosi în bazele noastre de date.
NOTĂ: Este o notă bună că majoritatea funcțiilor care sunt discutate în acest post nu fac parte din SQL standard. Drept urmare, acestea sunt o extensie a diferitelor motoare de baze de date, cum ar fi PostgreSQL, SQL Server etc.
Ce sunt funcțiile agregate de șiruri?
Funcțiile de agregare de șiruri sunt un set de funcții care efectuează operațiunile de agregare pe un set de șiruri de caractere dintr-un grup sau rânduri și returnează un singur rezultat.
Folosim în principal aceste funcții cu clauza GROUP BY pentru a grupa rândurile pe baza unei anumite coloane și apoi pentru a agrega șirurile din fiecare grup.
Unele funcții comune de agregare de șiruri includ:
- GROUP_CONCAT() – PostgreSQL și MySQL
- STRING_AGG – SQL Server
- ARRAY_AGG – PostgreSQL
- LISTAGG – Oracol
Să explorăm fiecare funcție și ceea ce oferă.
GROUP_CONCAT()
Funcția GROUP_CONCAT() este suportată de bazele de date PostgreSQL și MySQL. Ne permite să concatenăm valorile din mai multe rânduri într-un singur șir.
Să presupunem că avem un tabel „angajați” după cum urmează:
CREATE TABLE angajații (employee_id INT AUTO_INCREMENT PRIMARY KEY,
prenume VARCHAR(50),
prenume VARCHAR(50),
departament VARCHAR(50)
);
INSERT INTO angajați (prenume, prenume, departament) VALORI
(„Alice”, „Smith”, „Resurse umane”)
(„Bob”, „Johnson”, „Marketing”)
(„Charlie”, „Wilson”, „Finanțe”)
(„David”, „Maro”, „Vânzări”)
(„Eva”, „Davis”, „Inginerie”);
Ieșire:
Dacă dorim să determinăm numele complet al angajatului prin luarea prenumelui și concatenarea cu numele de familie, putem folosi funcția GROUP_CONCAT() așa cum este demonstrat în exemplul următor:
SELECTAȚIdepartament,
GROUP_CONCAT(prenume, ' ', prenume) AS nume_complet
DIN
angajati
A SE GRUPA CU
departament;
În acest caz, folosim funcția pentru a concatena șirurile din coloanele „first_name” și „last_name”, și un șir gol pentru a adăuga un spațiu la nume.
Acesta conține o listă a angajaților din fiecare departament.
STRING_AGG
Această funcție este similară cu funcția GROUP_CONCAT(), dar este acceptată numai în baza de date SQL Server.
Un exemplu de utilizare este următorul:
SELECTAȚIdepartament,
STRING_AGG(prenume, prenume, ' ') AS nume_complet
DIN
angajati
A SE GRUPA CU
departament;
Aceasta realizează concatenarea șirurilor pe coloanele specificate ca spațiu ca delimitator.
ARRAY_AGG
Funcția ARRAY_AGG este disponibilă numai în baza de date PostgreSQL. Ne permite să agregam valorile într-o singură matrice.
Un exemplu este următorul:
SELECTAȚIdepartament,
ARRAY_AGG(prenume) AS listă_angajați
DIN
angajati
A SE GRUPA CU
departament;
Acest lucru ar trebui să cumpere numele angajatului ca o matrice.
LISTAGG()
Funcția LISTAGG() este disponibilă numai în baza de date Oracle. Ne permite să concatenăm valorile într-un singur șir cu un delimitator specificat.
Un exemplu este următorul:
SELECTARE departament, LISTAGG(prenume, prenume, ' ') WITHIN GROUP (ORDER BY employee_name ASC) AS angajațiDE LA angajați
GROUP BY departament;
Aceasta concatenează numele angajaților și delimitatorul specificat.
Concluzie
În acest tutorial, am învățat despre funcțiile de agregare a șirurilor care ne permit să furnizăm o listă de valori ale șirurilor și să efectuăm o operație într-o singură valoare de șir rezultată.