SUM (Transact-SQL)

Retourne la somme de toutes les valeurs, ou uniquement des valeurs distinctes (DISTINCT) de l'expression. Les fonctions SUM ne s'emploient que sur des colonnes de type numérique. Les valeurs Null sont ignorées. Cette fonction peut être suivie par la Clause OVER (Transact-SQL).

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

SUM ( [ ALL | DISTINCT ] expression )

Arguments

  • ALL
    Applique la fonction d'agrégation à toutes les valeurs. ALL est l'argument par défaut.

  • DISTINCT
    Précise que la fonction SUM doit retourner la somme des valeurs uniques.

  • expression
    Constante, colonne ou fonction, et toute combinaison d'opérateurs arithmétiques, de type chaîne ou au niveau du bit. expression est de type numérique exact ou approximatif, à l'exception du type bit. Les fonctions d'agrégation et les sous-requêtes ne sont pas autorisées. Pour plus d'informations, consultez Expressions (Transact-SQL).

Types de retour

Retourne la somme de toutes les valeurs de expression dans le type de données expression le plus précis.

Résultat de l'expression

Type de retour

tinyint

int

smallint

int

int

int

bigint

bigint

catégorie decimal (p, s)

decimal(38, s)

catégorie money et smallmoney

money

catégorie float et real

float

Exemples

A. Utilisation de SUM pour les fonctions d'agrégation et d'agrégation de lignes

Les exemples suivants illustrent les différences entre les fonctions d'agrégation et celles d'agrégation de lignes. Le premier exemple montre les fonctions d'agrégation donnant uniquement des données résumées, et le second montre les fonctions d'agrégation de lignes donnant les données résumées et détaillées.

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

Voici l'ensemble des résultats.

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

Voici l'ensemble des résultats.

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. Calcul des totaux dans les groupes comportant plusieurs colonnes

L'exemple suivant calcule la somme de ListPrice et StandardCost pour chaque couleur répertoriée dans la table Product.

USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO

Voici l'ensemble des résultats.

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)