In SQL Server, il SUM()
la funzione aggregata restituisce la somma di una determinata espressione.
Può anche essere utilizzato per restituire la somma di tutti i valori distinti (unici) nell'espressione.
SUM()
funziona solo su colonne numeriche. I valori nulli vengono ignorati.
Sintassi
La sintassi è questa:
SUM ( [ ALL | DISTINCT ] expression )
Può essere utilizzato anche con un OVER
clausola:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
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 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | NULL | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | | 1001 | Right handed screwdriver | 25.99 | +------------+---------------------------------+----------------+
Possiamo utilizzare la seguente query per ottenere la somma di tutti i prezzi.
SELECT SUM(ProductPrice)
FROM Products;
Risultato:
367.20
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 i valori null durante l'esecuzione del calcolo.
Se la colonna contiene valori Null, potresti visualizzare un avviso che indica che i valori Null sono stati eliminati.
Ad esempio, ecco l'avviso che ho ricevuto durante l'esecuzione dell'esempio precedente:
SELECT SUM(ProductPrice)
FROM Products;
Risultato:
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Risultati filtrati
Il SUM()
La funzione opera sulle righe restituite dalla query. Quindi, se filtri i risultati, il risultato 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(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Risultato:
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
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
Il SUM()
la funzione può essere utilizzata con un OVER
clausola per creare una funzione finestra. Vedi SQL SUM()
per i principianti per un esempio.