Funzioni aggregate di stringhe SQL

Funzioni Aggregate Di Stringhe Sql



Se hai mai avuto a che fare con database SQL, probabilmente hai familiarità con le funzioni aggregate. Sono essenzialmente un insieme di funzioni che eseguono i calcoli su un insieme di valori e restituiscono un unico risultato.

Un esempio include funzioni come SUM(), AVG(), COUNT(), MAX e MIN(). Tuttavia, una cosa che noterai delle funzioni aggregate in SQL è che sono orientate verso operazioni numeriche.

Ma sapevi che esistono funzioni aggregate che gestiscono valori stringa? In questo tutorial esamineremo queste funzioni, come funzionano e come possiamo utilizzarle nei nostri database.







NOTA: è bene notare che la maggior parte delle funzioni discusse in questo post non fanno parte dell'SQL standard. Di conseguenza, sono un'estensione di vari motori di database come PostgreSQL, SQL Server, ecc.



Cosa sono le funzioni di aggregazione di stringhe?

Le funzioni di aggregazione delle stringhe sono un insieme di funzioni che eseguono operazioni di aggregazione su un insieme di stringhe all'interno di un gruppo o di righe e restituiscono un singolo risultato.



Utilizziamo principalmente queste funzioni con la clausola GROUP BY per raggruppare le righe in base a una determinata colonna e quindi aggregare le stringhe in ciascun gruppo.





Alcune funzioni comuni di aggregazione di stringhe includono:

  • GRUPPO_CONCAT() – PostgreSQL e MySQL
  • STRING_AGG – SQL Server
  • ARRAY_AGG – PostgreSQL
  • LISTAG – Oracolo

Esploriamo ciascuna funzione e ciò che fornisce.



GRUPPO_CONCAT()

La funzione GROUP_CONCAT() è supportata dai database PostgreSQL e MySQL. Ci consente di concatenare i valori di più righe in un'unica stringa.

Supponiamo di avere una tabella 'dipendenti' come segue:

CREA TABELLA dipendenti (
Employee_id INT AUTO_INCREMENT CHIAVE PRIMARIA,
nome VARCHAR(50),
cognome VARCHAR(50),
dipartimento VARCHAR(50)
);

INSERISCI NEI VALORI dei dipendenti (nome, cognome, dipartimento).
('Alice', 'Smith', 'Risorse umane'),
('Bob', 'Johnson', 'Marketing'),
('Charlie', 'Wilson', 'Finanza'),
('Davide', 'Marrone', 'Vendite'),
('Eva', 'Davis', 'Ingegneria');

Produzione:

Se vogliamo determinare il nome completo del dipendente prendendo il nome e concatenandolo con il cognome, possiamo utilizzare la funzione GRUPPO_CONCAT() come dimostrato nel seguente esempio:

SELEZIONARE
Dipartimento,
GRUPPO_CONCAT(nome, ' ', cognome) AS nome_completo
DA
dipendenti
RAGGRUPPA PER
Dipartimento;

In questo caso utilizziamo la funzione per concatenare le stringhe delle colonne “first_name” e “last_name” e una stringa vuota per aggiungere uno spazio ai nomi.

Contiene l'elenco dei dipendenti di ciascun dipartimento.

STRING_AGG

Questa funzione è simile alla funzione GROUP_CONCAT() ma è supportata solo nel database SQL Server.

Un esempio di utilizzo è il seguente:

SELEZIONARE
Dipartimento,
STRING_AGG(nome, cognome, ' ') AS nome_completo
DA
dipendenti
RAGGRUPPA PER
Dipartimento;

Ciò esegue la concatenazione di stringhe sulle colonne specificate come spazio come delimitatore.

ARRAY_AGG

La funzione ARRAY_AGG è disponibile solo nel database PostgreSQL. Ci consente di aggregare i valori in un unico array.

Un esempio è il seguente:

SELEZIONARE
Dipartimento,
ARRAY_AGG(nome) AS lista_impiegati
DA
dipendenti
RAGGRUPPA PER
Dipartimento;

Questo dovrebbe aggregare il nome del dipendente come un array.

LISTAGG()

La funzione LISTAGG() è disponibile solo nel database Oracle. Ci consente di concatenare i valori in un'unica stringa con un delimitatore specificato.

Un esempio è il seguente:

SELECT dipartimento, LISTAGG(nome, cognome,  ' ') WITHIN GRUPPO (ORDER BY nome_impiegato ASC) Dipendenti AS
DAI dipendenti
GRUPPO PER dipartimento;

Questo concatena i nomi dei dipendenti e il delimitatore specificato.

Conclusione

In questo tutorial abbiamo appreso le funzioni di aggregazione delle stringhe che ci consentono di fornire un elenco di valori di stringa ed eseguire un'operazione su un singolo valore di stringa risultante.