La funzione SQL SUM() spiegata con 5 esempi pratici
Indice
- Per iniziare: Sintassi della funzione SUM
- Esempio 1: Uso di SUM() con una sola colonna
- Esempio 2: Uso di SUM() con un'espressione
- Esempio 3: Uso di SUM() con GROUP BY
- Esempio 4: Uso di SUM() con DISTINCT
- Esempio 5: Utilizzo di SUM() con HAVING
- Volete mettere alla prova la vostra abilità con la funzione SQL SUM()?
Le funzioni aggregate sono una parte importante della conoscenza di SQL e non c'è posto migliore per iniziare a impararle che la funzione SUM(). In questo articolo, potrete ampliare o rinfrescare il vostro SQL con 5 esempi pratici di SUM().
L'SQL ci permette di fare molto di più che selezionare valori o espressioni da tabelle. La maggior parte delle operazioni sui database relazionali utilizza funzioni aggregate come SUM()
per eseguire calcoli sui dati.
Le funzioni aggregate consentono di calcolare varie statistiche per un gruppo di righe. Per ulteriori informazioni su di esse, consultare l'articolo A Beginner's Guide to SQL Aggregate Functions.
La funzione SUM()
somma tutti i valori di una determinata colonna o i valori restituiti da un'espressione (che può essere composta da numeri, valori di colonne o entrambi). Si tratta di una buona introduzione alle funzioni aggregate di SQL, quindi tuffiamoci in questa guida!
Per iniziare: Sintassi della funzione SUM
Ecco la sintassi della funzione SUM:
SUM ([ DISTINCT ] column_or_expression) |
Come si vede, questa funzione richiede un solo argomento: il nome di una colonna o un'espressione. I valori forniti nell'argomento vengono sommati e restituiti dalla funzione SUM()
. La parola chiave DISTINCT
è facoltativa; quando viene usata, SUM()
aggiunge solo valori non ripetitivi. Spiegherò meglio questo aspetto nella prossima sezione.
Per prima cosa, conosciamo i dati su cui costruiremo le nostre query SQL SUM()
.
La tabella product
memorizza i dati che utilizzeremo per calcolare la somma di valori dati. Ecco un esempio dei suoi dati:
id | name | price | quantity | category |
---|---|---|---|---|
1 | dress | 120 | 1 | clothing |
2 | T-shirt | 55 | 2 | clothing |
3 | jacket | 600 | 2 | clothing |
4 | netbook | 2100 | NULL | IT |
5 | mouse | 24 | NULL | IT |
6 | bricks | 68 | 1 | toys |
7 | wood mobile | 22 | 1 | toys |
8 | teddy bear | 70 | NULL | toys |
Esempio 1: Uso di SUM() con una sola colonna
Se si desidera sommare i valori memorizzati in una colonna, utilizzare SUM()
con il nome della colonna come argomento. Osservate l'esempio seguente:
SELECT SUM (quantity) AS sum_quantity FROM product; |
In questa query, si usa SUM()
da solo nell'istruzione SELECT. La funzione SUM()
somma tutti i valori della colonna quantity
e restituisce il totale come risultato della funzione. Il nome della nuova colonna risultato (cioè l'alias) è sum_quantity
.
Ecco il risultato:
sum_quantity |
---|
7 |
Come si può vedere, la somma dei valori della colonna quantity
della tabella è 7. Se una delle righe è stata sommata, la somma dei valori è 7. product
è 7. Se una delle righe ha un NULL
in questa colonna, SUM()
omette questa riga dal calcolo. Si noti che nel risultato è presente una sola riga: tutte le singole righe sono state "collassate" da SUM()
e i loro dettagli non sono disponibili nel risultato.
Esempio 2: Uso di SUM() con un'espressione
Si tratta di un esempio che utilizza un'espressione come argomento SUM()
. Questa è la query:
SELECT SUM (quantity*price) AS total_value FROM product; |
E il risultato restituito è:
total_value |
---|
1520 |
In questo caso, l'argomento della funzione SUM()
è un'espressione che calcola il valore totale di ogni prodotto: la quantità del prodotto (il valore nella colonna quantity
) moltiplicata per il suo prezzo (il valore nella colonna prezzo). I valori totali calcolati per ogni prodotto vengono sommati e viene restituito il totale generale dei loro valori; total_sum
è 1520, come si può vedere nel risultato.
Esempio 3: Uso di SUM() con GROUP BY
Di solito si utilizza la funzione SUM con la clausola GROUP BY
. Con GROUP BY
, i valori sommati vengono calcolati per un gruppo di righe. Se non si ha familiarità con GROUP BY
, si consiglia di leggere Utilizzo di GROUP BY in SQL o Come funziona GROUP BY in SQL prima di procedere con questo esempio.
Nella query sottostante, è possibile vedere quanti prodotti sono presenti in ciascuna categoria:
SELECT category, SUM (quantity) AS total_quantity FROM product GROUP BY category; |
Il risultato restituito da questa query è:
category | total_quantity |
---|---|
clothing | 5 |
IT | NULL |
toys | 2 |
In questo caso, la colonna categoria è presente in SELECT
perché vogliamo vedere la categoria per la quale viene calcolata la somma. La funzione successiva è SUM()
, che somma i valori delle quantità. L'aggiunta della clausola GROUP BY
significa che i prodotti con lo stesso valore nella colonna categoria vengono inseriti in un unico gruppo; la somma viene calcolata separatamente per ogni gruppo. Infine, ricordate che la clausola GROUP BY
deve sempre venire dopo FROM
.
Si noti che per la categoria IT la somma calcolata è NULL
. Questo perché tutte le righe che hanno un valore 'IT' nella colonna categoria hanno un NULL nella colonna quantity
. La categoria "giocattoli" ha un prodotto con un NULL nella colonna quantità, quindi i valori rimanenti di questa categoria vengono sommati.
Naturalmente, è possibile anche raggruppare i record e calcolare le somme su più colonne.
Esempio 4: Uso di SUM() con DISTINCT
La funzione SQL SUM()
può anche sommare solo valori unici (cioè non ripetuti). A tale scopo, utilizzate la funzione SUM
con la parola chiave DISTINCT
come argomento. Ad esempio:
SELECT category, SUM ( DISTINCT quantity) FROM product GROUP BY category; |
E il risultato restituito da questa funzione:
category | total_quantity |
---|---|
clothing | 3 |
IT | NULL |
toys | 2 |
Se si esamina il database, si vedrà che ci sono cinque capi di abbigliamento in magazzino:
name | quantity | category |
---|---|---|
dress | 1 | clothing |
T-shirt | 2 | clothing |
jacket | 2 | clothing |
Tuttavia, la query restituisce un 3 per la quantità totale di capi di abbigliamento in magazzino. Perché? Perché "2" compare due volte nella colonna della quantità degli articoli della categoria abbigliamento. Quando si usa DISTINCT
, i valori ripetuti nella colonna vengono ignorati.
Si noti che la parola chiave DISTINCT
viene prima nell'argomento della funzione, seguita dal nome della colonna o dall'espressione.
Esempio 5: Utilizzo di SUM() con HAVING
È possibile utilizzare SUM()
nella clausola HAVING
come parte dei criteri di filtro. Ad esempio, nella query qui sotto vogliamo che nel risultato compaiano solo le righe con una quantità superiore a un certo valore:
SELECT category, SUM (quantity) AS total_quantity FROM product GROUP BY category HAVING SUM (quantity)>2; |
E il risultato:
category | total_quantity |
---|---|
clothing | 5 |
La query ha restituito solo una categoria: abbigliamento. Perché? Perché la somma delle quantità dei prodotti deve essere maggiore di 2 per essere inclusa nel risultato. La colonna abbigliamento (con un total_quantity
di 5) soddisfa questo criterio. Le altre categorie non vengono visualizzate perché le loro quantità totali sono inferiori a 2.
Volete mettere alla prova la vostra abilità con la funzione SQL SUM()?
In questo articolo abbiamo imparato a conoscere il funzionamento della funzione SQL SUM()
. È possibile utilizzarla per sommare tutti i valori di una colonna in tutte le righe di una tabella, per totalizzare i risultati di un'espressione che utilizza più colonne e per sommare i valori di un gruppo di righe. È inoltre possibile utilizzare SUM() all'interno della clausola HAVING per filtrare i dati in base ai valori sommati.
Volete saperne di più su SUM()
? L'articolo Come usare CASE WHEN con SUM() in SQL spiega come usare SUM()
con l'espressione CASE WHEN
. Ampliate le vostre conoscenze! E se volete mettere alla prova le vostre conoscenze di SQL, il nostro SQL Practice Set è una buona opzione.
Continuate a imparare e a fare pratica con l'SQL!