Funcions d'agregació de cadena SQL

Funcions D Agregacio De Cadena Sql



Si alguna vegada heu tractat amb bases de dades SQL, probablement esteu familiaritzat amb les funcions agregades. Són bàsicament un conjunt de funcions que realitzen els càlculs sobre un conjunt de valors i retornen un únic resultat.

Un exemple inclou funcions com SUM(), AVG(), COUNT(), MAX i MIN(). Tanmateix, una cosa que notareu sobre les funcions agregades a SQL és que estan orientades a operacions numèriques.

Però sabíeu que hi ha funcions agregades que tracten amb valors de cadena? En aquest tutorial, veurem aquestes funcions, com funcionen i com les podem utilitzar a les nostres bases de dades.







NOTA: És una bona nota que la majoria de les funcions que es comenten en aquesta publicació no formen part de l'SQL estàndard. Com a resultat, són una extensió de diversos motors de bases de dades com PostgreSQL, SQL Server, etc.



Què són les funcions d'agregació de cadenes?

Les funcions d'agregació de cadenes són un conjunt de funcions que realitzen les operacions d'agregació sobre un conjunt de cadenes dins d'un grup o files i retornen un únic resultat.



Utilitzem principalment aquestes funcions amb la clàusula GROUP BY per agrupar les files en funció d'una columna determinada i després agregar les cadenes de cada grup.





Algunes funcions d'agregació de cadenes habituals inclouen:

  • GROUP_CONCAT() – PostgreSQL i MySQL
  • STRING_AGG - SQL Server
  • ARRAY_AGG - PostgreSQL
  • LISTAGG – Oracle

Explorem cada funció i què ofereix.



GROUP_CONCAT()

La funció GROUP_CONCAT() és compatible amb les bases de dades PostgreSQL i MySQL. Ens permet concatenar els valors de diverses files en una única cadena.

Suposem que tenim una taula 'empleats' de la següent manera:

Empleats CREATE TAULA (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
primer_nom VARCHAR(50),
cognom VARCHAR(50),
departament VARCHAR(50)
);

INSERT INTO empleats (nom, cognoms, departament) VALORS
('Alice', 'Smith', 'Recursos humans'),
('Bob', 'Johnson', 'Màrqueting'),
('Charlie', 'Wilson', 'Finances'),
('David', 'Marró', 'Ventes'),
('Eva', 'Davis', 'Enginyeria');

Sortida:

Si volem determinar el nom complet de l'empleat prenent el nom i concatenant amb el cognom, podem utilitzar la funció GROUP_CONCAT() tal com es mostra a l'exemple següent:

SELECCIONA
departament,
GROUP_CONCAT(nom, ' ', cognom) AS nom_complet
DE
empleats
AGRUPAR PER
departament;

En aquest cas, utilitzem la funció per concatenar les cadenes de les columnes 'first_name' i 'last_name', i una cadena buida per afegir un espai als noms.

Conté una llista dels empleats de cada departament.

STRING_AGG

Aquesta funció és similar a la funció GROUP_CONCAT() però només s'admet a la base de dades SQL Server.

Un exemple d'ús és el següent:

SELECCIONA
departament,
STRING_AGG(nom, cognom, ' ') AS nom_complet
DE
empleats
AGRUPAR PER
departament;

Això realitza la concatenació de cadenes a les columnes especificades com a espai com a delimitador.

ARRAY_AGG

La funció ARRAY_AGG només està disponible a la base de dades PostgreSQL. Ens permet agregar els valors en una sola matriu.

Un exemple és el següent:

SELECCIONA
departament,
ARRAY_AGG(nom_nom) AS llista_empleats
DE
empleats
AGRUPAR PER
departament;

Això hauria d'agregar el nom de l'empleat com a matriu.

LISTAGG()

La funció LISTAGG() només està disponible a la base de dades Oracle. Ens permet concatenar els valors en una única cadena amb un delimitador especificat.

Un exemple és el següent:

SELECCIONA departament, LISTAGG(nom, cognoms,  ' ') DINS DEL GRUP (ORDER PER nom_empleat ASC) AS empleats
DELS empleats
GRUP PER departament;

Això concatena els noms dels empleats i el delimitador especificat.

Conclusió

En aquest tutorial, hem après les funcions d'agregació de cadena que ens permeten proporcionar una llista de valors de cadena i realitzar una operació en un únic valor de cadena resultant.