Partager via


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.

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

catégorie d'entiers

int

catégorie decimal (p, s)

decimal(38, s)

catégorie money et smallmoney

money

catégorie float et real

float

ms187810.note(fr-fr,SQL.90).gifImportant :
Les fonctions d'agrégation au format DISTINCT, par exemple AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) et SUM(DISTINCT column_name) ne sont pas prises en charge lorsque vous utilisez CUBE ou ROLLUP. En cas d'utilisation, le moteur de base de données SQL Server 2005 retourne un message d'erreur et annule la requête.

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 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

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 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

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 AdventureWorks;
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)

Voir aussi

Référence

Fonctions d'agrégation (Transact-SQL)
Clause OVER (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005