SUM (Transact-SQL)
Restituisce la somma di tutti i valori o solo dei valori DISTINCT dell'espressione. La funzione SUM può essere utilizzata solo con colonne numeriche. I valori Null vengono ignorati. Può precedere la Clausola OVER (Transact-SQL).
Sintassi
SUM ( [ ALL | DISTINCT ] expression )
Argomenti
ALL
Applica la funzione di aggregazione a tutti i valori. Il valore predefinito è ALL.DISTINCT
Specifica che l'istruzione SUM restituisce la somma dei soli valori univoci.expression
Una costante, colonna o funzione e qualsiasi combinazione di operatori aritmetici, bit per bit o di stringa. L'argomento expression è un'espressione di un tipo di dati appartenente alla categoria dei dati numerici esatti o approssimati, escluso il tipo di dati bit. Non sono consentite funzioni di aggregazione e subquery. Per ulteriori informazioni, vedere Espressioni (Transact-SQL).
Tipi restituiti
Restituisce la somma di tutti i valori di expression nel tipo di dati di expression più preciso.
Risultato dell'espressione |
Tipo restituito |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
Categoria decimal (p, s) |
decimal(38, s) |
Categorie money e smallmoney |
money |
Categorie float e real |
float |
Esempi
A. Utilizzo della funzione SUM per aggregazioni e aggregazioni a livello di riga
Negli esempi seguenti vengono illustrate le differenze tra le funzioni di aggregazione e le funzioni di aggregazione a livello di riga. Nel primo esempio vengono illustrate funzioni di aggregazione che restituiscono solo dati di riepilogo, mentre nel secondo esempio vengono utilizzate funzioni di aggregazione a livello di riga che restituiscono dati dettagliati e di riepilogo.
USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
WHERE Color IS NOT NULL
AND ListPrice != 0.00
AND Name LIKE 'Mountain%'
GROUP BY Color
ORDER BY Color;
GO
Set di risultati:
Color
--------------- --------------------- ---------------------
Black 27404.84 15214.9616
Silver 26462.84 14665.6792
White 19.00 6.7926
(3 row(s) affected)
USE AdventureWorks;
GO
SELECT Color, ListPrice, StandardCost
FROM Production.Product
WHERE Color IS NOT NULL
AND ListPrice != 0.00
AND Name LIKE 'Mountain%'
ORDER BY Color
COMPUTE SUM(ListPrice), SUM(StandardCost) BY Color;
GO
Set di risultati:
Color ListPrice StandardCost
--------------- --------------------- ---------------------
Black 2294.99 1251.9813
Black 2294.99 1251.9813
Black 2294.99 1251.9813
Black 1079.99 598.4354
Black 1079.99 598.4354
Black 1079.99 598.4354
Black 1079.99 598.4354
Black 3374.99 1898.0944
Black 3374.99 1898.0944
Black 3374.99 1898.0944
Black 3374.99 1898.0944
Black 539.99 294.5797
Black 539.99 294.5797
Black 539.99 294.5797
Black 539.99 294.5797
Black 539.99 294.5797
sum sum
--------------------- ---------------------
27404.84 15214.9616
Color ListPrice StandardCost
--------------- --------------------- ---------------------
Silver 2319.99 1265.6195
Silver 2319.99 1265.6195
Silver 2319.99 1265.6195
Silver 3399.99 1912.1544
Silver 3399.99 1912.1544
Silver 3399.99 1912.1544
Silver 3399.99 1912.1544
Silver 769.49 419.7784
Silver 769.49 419.7784
Silver 769.49 419.7784
Silver 769.49 419.7784
Silver 564.99 308.2179
Silver 564.99 308.2179
Silver 564.99 308.2179
Silver 564.99 308.2179
Silver 564.99 308.2179
sum sum
--------------------- ---------------------
26462.84 14665.6792
Color ListPrice StandardCost
--------------- --------------------- ---------------------
White 9.50 3.3963
White 9.50 3.3963
sum sum
--------------------- ---------------------
19.00 6.7926
(37 row(s) affected)
B. Calcolo dei totali di gruppi con più di una colonna
Nell'esempio seguente viene calcolata la somma di ListPrice e StandardCost per ogni colore incluso nella tabella Product.
USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO
Set di risultati:
Color
--------------- --------------------- ---------------------
NULL 4182.32 2238.4755
Black 67436.26 38636.5002
Blue 24015.66 14746.1464
Grey 125.00 51.5625
Multi 478.92 272.2542
Red 53274.10 32610.7661
Silver 36563.13 20060.0483
Silver/Black 448.13 198.97
White 36.98 13.5172
Yellow 34527.29 21507.6521
(10 row(s) affected)