In MySQL, il SUM()
la funzione di aggregazione restituisce la somma di una determinata espressione.
Può anche essere utilizzato per restituire la somma di tutti i valori distinti (unici) in un'espressione.
Sintassi
La sintassi è questa:
SUM([DISTINCT] expr) [over_clause]
Dati di esempio
Supponiamo di avere una tabella chiamata Products
con i seguenti dati:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Risultato:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | NULL | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Esempio
Possiamo utilizzare la seguente query per ottenere la somma di tutti i prezzi.
SELECT SUM(ProductPrice)
FROM Products;
Risultato:
389.70
Qui, le informazioni sui prezzi sono memorizzate nel ProductPrice
colonna, e quindi lo passiamo come argomento a SUM()
funzione, che quindi calcola la somma e restituisce il risultato.
Valori Nulli
Il SUM()
la funzione ignora qualsiasi valore NULL. Nella nostra tabella di esempio sopra, la mazza ha un valore NULL nel suo ProductPrice
colonna, ma è stata ignorata nel calcolo.
Risultati filtrati
Il SUM()
La funzione opera sulle righe restituite dalla query. Quindi, se filtri i risultati, l'output di SUM()
lo rifletterà.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Risultato:
78.72
In questo caso, 78,72 è la somma di tutti i prodotti offerti dal venditore specificato.
Il DISTINCT
Parola chiave
Puoi usare il DISTINCT
parola chiave con SUM()
calcolare solo valori distinti. Cioè, se sono presenti valori duplicati, vengono trattati come un valore.
Esempio:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Risultato:
363.71
La nostra tabella contiene due articoli con lo stesso prezzo (il cacciavite sinistro e il cacciavite destro hanno entrambi un prezzo di 25,99). Il DISTINCT
la parola chiave fa sì che entrambi i valori vengano trattati come uno.
Funzioni della finestra
Possiamo usare un OVER
clausola con SUM()
funzione per creare una funzione finestra. Vedi SQL SUM()
per i principianti per un esempio.