Torna all'elenco degli articoli Articoli
Tempo di lettura: 8 minuti

Cheat sheet sulle funzioni aggregate di SQL

Una guida rapida all'uso delle funzioni aggregate SQL.

Questo foglio informativo sulle funzioni aggregate SQL è stato progettato per essere il vostro compagno ogni volta che utilizzate SQL per l'analisi dei dati.

L'aggregazione dei dati è essenziale per qualsiasi analisi significativa dei dati. SQL offre una serie di funzioni che consentono di includere totali, medie e conteggi nei report e di estrarre il valore minimo e massimo di qualsiasi colonna di dati.

In questa scheda illustreremo le seguenti funzioni aggregate di SQL:

  • SUM() - Restituisce il totale di tutti i valori.
  • AVG() - Restituisce la media di tutti i valori.
  • COUNT() - Conta e restituisce il numero di valori.
  • MIN() - Restituisce il valore più piccolo.
  • MAX() - Restituisce il valore più grande.

Verrà inoltre mostrato come utilizzare le funzioni aggregate:

  • Con GROUP BY.
  • Per ordinare i dati.
  • Come condizione di filtraggio.

Se non avete mai usato SQL, potreste iniziare iscrivendovi al nostro corso SQL per principianti . Questo corso è adatto ai principianti assoluti; i suoi 129 esercizi interattivi vi aiuteranno rapidamente ad acquisire competenze e sicurezza. Potrete imparare comodamente da casa vostra e non dovrete installare alcun software, poiché utilizzerete il nostro database online attraverso il vostro browser.

Funzioni aggregate SQL comuni

Tutti gli esempi di questo foglio informativo utilizzano i seguenti dati contenuti in una tabella denominata orders.

departmentcustomeritemqtytot_valuedate_paid
125Kettle1152024-01-15
118Toaster440
216Mug12182024-01-22
325Desk4120
216Dinner Plate12242024-01-22
318Office Chair2362024-01-17
120Lamp345
210Cutlery Set1302024-01-22

SOMMA()

La funzione SUM() restituisce la somma totale di una colonna di numeri.

Esempio:

SELECT SUM(tot_value) 
FROM orders;

Risultato:

SUM(tot_value)
328

Per ulteriori informazioni su come utilizzare la funzione SUM(), consultare il nostro libro di ricette Come sommare i valori di una colonna in SQL.

Per ulteriori esempi della funzione SUM(), consultate il nostro articolo La funzione SQL SUM() spiegata con 5 esempi pratici.

AVG()

La funzione AVG() restituisce il valore medio di una colonna di numeri.

Esempio:

SELECT AVG(qty) 
FROM orders;

Risultato:

AVG(qty)
4.875

Per ulteriori informazioni sull'uso della funzione AVG(), consultate il nostro ricettario Come trovare la media di una colonna numerica in SQL.

Per ulteriori esempi di utilizzo della funzione AVG(), consultate il nostro articolo La funzione SQL AVG() spiegata con esempi.

CONTO()

La funzione COUNT() restituisce il numero di righe (cioè di valori) di una determinata colonna. Questa funzione può essere utilizzata in tre modi diversi.

CONTE(*)

Questa opzione fornisce il numero totale di righe restituite dalla query.

Esempio:

SELECT COUNT(*) 
FROM orders;

Risultato:

COUNT(*)
8

CONTA(nome_colonna)

Questa opzione fornisce il numero di righe della query in cui la colonna denominata non contiene il valore NULL.

Esempio:

L'esempio mostra il numero di ordini che sono stati pagati, cioè gli ordini in cui date_paid non è NULL.

SELECT COUNT(date_paid) 
FROM orders;

Risultato:

COUNT(date_paid)
5

COUNT(DISTINCT nome_colonna)

Questa opzione fornisce il numero di valori unici nella colonna denominata.

Esempio:

Mostriamo il numero di clienti diversi che hanno effettuato ordini.

SELECT COUNT(DISTINCT customer) 
FROM orders;

Risultato:

COUNT(DISTINCT customer)
5

Per ulteriori informazioni sulla funzione COUNT(), consultare il nostro ricettario Come contare il numero di righe in una tabella in SQL.

Per ulteriori esempi di utilizzo della funzione COUNT(), consultate il nostro articolo La funzione SQL Count spiegata con 7 esempi.

Per ulteriori informazioni sull'uso di COUNT(DISTINCT), vedere Come contare i valori distinti in SQL.

Per ulteriori informazioni sulla differenza tra COUNT(*), COUNT(column) e COUNT(DISTINCT), vedere Qual è la differenza tra COUNT(*), COUNT(1), COUNT(column) e COUNT(DISTINCT)?

MIN()

La funzione MIN() restituisce il valore più piccolo di una colonna. Questa funzione funziona con la maggior parte dei tipi di dati, compresi i numeri, le stringhe (le prime in ordine alfabetico) e le date (ad esempio, la data più vecchia).

Esempio:

SELECT MIN(tot_value) 
FROM orders;

Risultato:

MIN(tot_value)
15.00

Per ulteriori informazioni sulla funzione MIN(), consultare il nostro libro di ricette Come trovare il valore minimo di una colonna in SQL.

Per ulteriori esempi della funzione MIN(), consultate il nostro articolo SQL MIN and MAX Functions Explained in 6 Examples.

MAX()

La funzione MAX() restituisce il valore più grande di una colonna. Questa funzione funziona con la maggior parte dei tipi di dati, compresi i numeri, le stringhe (le ultime in ordine alfabetico) e le date (ad esempio, la data più recente).

Esempio:

SELECT MAX(date_paid) 
FROM orders;

Risultato:

MAX(date_paid)
2024-01-24

Per ulteriori informazioni sulla funzione MAX(), vedere Come trovare il valore massimo di una colonna numerica in SQL.

Per ulteriori esempi, vedere Funzioni SQL MIN e MAX spiegate in 6 esempi.

Uso delle funzioni aggregate SQL con GROUP BY

Negli esempi precedenti, gli aggregati sono stati calcolati sull'intera tabella. Tuttavia, spesso si ha bisogno di aggregati suddivisi in gruppi, ad esempio per calcolare il valore totale degli ordini per cliente o la quantità media ordinata per reparto.

In SQL, la clausola GROUP BY crea i gruppi da utilizzare per l'aggregazione. Questa clausola sopprime le singole righe in modo che il report contenga una riga per ogni gruppo definito. Se si raggruppa per cliente, si vedrà una riga per ogni cliente. Questa riga contiene le informazioni sintetiche richieste. È possibile raggruppare i clienti in base a più di un criterio; ad esempio, è possibile raggruppare i clienti in base alla loro area geografica per ottenere i clienti di ciascuna area.

Per ulteriori informazioni sui raggruppamenti in SQL, consultare l'articolo GROUP BY in SQL spiegato.

Esempio:

SELECT customer, SUM(tot_value)
FROM orders
GROUP BY customer;

Risultato:

customerSUM(tot_value)
1030.00
1642.00
1876.00
2045.00
25135.00

La colonna per cui si effettua il raggruppamento è solitamente inclusa nell'elenco SELECT, altrimenti il risultato non è significativo. L'elenco SELECT può includere solo la colonna per cui si sta raggruppando, le funzioni aggregate e i valori letterali. Se viene elencata una colonna non utilizzata in un aggregato e non inclusa nella clausola GROUP BY, viene visualizzato un messaggio di errore.

È possibile includere più di una funzione aggregata nella query e raggruppare per più di una colonna. Elencare i gruppi dal maggiore al minore, separati da virgole.

Per ulteriori informazioni, consultare questi articoli:

Se avete bisogno di esercitarvi a usare gli aggregati con i gruppi, consultate Pratica su SQL: 10 esercizi pratici su GROUP BY con soluzioni dettagliate.

Uso delle funzioni aggregate di SQL per ordinare i dati

È possibile ordinare i risultati in base a una colonna aggregata. Poiché ORDER BY viene calcolato dopo GROUP BY, è possibile utilizzare le funzioni aggregate direttamente nella clausola ORDER BY.

Esempio:

Si potrebbe voler raggruppare gli ordini per cliente e poi mostrare i clienti ordinati in base al valore totale dei loro ordini; in questo modo, il cliente con il valore più alto di ordini appare in cima all'elenco.

SELECT customer, sum(tot_value)
FROM orders
GROUP BY customer
ORDER BY sum(tot_value) DESC;

Risultato:

customerSUM(tot_value)
25135.00
1876.00
2045.00
1642.00
1030.00

È possibile specificare un aggregato nella clausola ORDER BY utilizzando esattamente lo stesso formato utilizzato per specificarlo nell'elenco delle colonne da selezionare. La clausola DESC ordina le righe dalla più alta alla più bassa.

Per ulteriori informazioni sull'ordinamento mediante funzioni aggregate, consultate i seguenti ricettari SQL:

Usare le funzioni aggregate SQL per filtrare i dati

A volte è necessario filtrare in base a una colonna aggregata. Per filtrare in base a un aggregato, utilizzare la clausola HAVING. Opzionalmente, è possibile utilizzarla insieme alla clausola WHERE per aggiungere ulteriori filtri su colonne non aggregate.

Esempio:

Si potrebbe voler ottenere un elenco di clienti che hanno pagato più di un determinato valore di merce per includerli nelle offerte speciali.

SELECT customer, SUM(tot_value)
FROM orders
WHERE date_paid IS NOT NULL
GROUP BY customer
HAVING sum(tot_value) > 30
ORDER BY customer;

Risultato:

customerSUM(tot_value)
1642.00
1836.00

Per filtrare le righe in base a una funzione aggregata, occorre utilizzare la clausola HAVING. La clausola HAVING segue immediatamente la clausola GROUP BY. Opzionalmente, è possibile includere anche una clausola WHERE e una clausola ORDER BY.

Per ulteriori informazioni, consultare questi ricettari SQL:

Oltre il foglio informativo sulle funzioni aggregate di SQL

Se desiderate migliorare le vostre competenze in SQL, date un'occhiata alla nostra offerta di corsi SQL interattivi. Abbiamo un'ampia gamma di corsi per diversi livelli di competenza in SQL. Abbiamo anche corsi specializzati sull'uso di SQL nell'analisi dei dati.

Raccomando in particolare il nostro percorso di apprendimento Pratica su SQL . Contiene 9 corsi incentrati sulla pratica completa dell'SQL, comprese le funzioni SQL JOIN e aggregate. Gli esercizi vengono svolti su set di dati realistici, come il database di un'università e di un negozio. Pubblichiamo anche un nuovo corso di pratica SQL nel nostro percorsoPratica Mensile su SQL .

Potete ottenere tutti i corsi di cui sopra e molto altro ancora con il nostro piano Completo per sempre SQL, che vi dà accesso a vita a tutti i corsi attuali e futuri della nostra piattaforma. Buon apprendimento!