Condividi tramite


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.

Icona di collegamento a un argomentoConvenzioni della sintassi 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

Categoria integer

int

Categoria decimal (p, s)

decimal(38, s)

Categorie money e smallmoney

money

Categorie float e real

float

ms187810.note(it-it,SQL.90).gifImportante:
Le funzioni di aggregazione Distinct, ad esempio AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) e SUM(DISTINCT column_name) non sono supportate con CUBE o ROLLUP. Se si utilizzano tali funzioni, Motore di database di SQL Server 2005 visualizza un messaggio di errore e annulla la query.

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)

Vedere anche

Riferimento

Funzioni di aggregazione (Transact-SQL)
Clausola OVER (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005