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 (Transact-SQL).

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 sottoquery. 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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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