Dans SQL Server, le SUM()
La fonction d'agrégation renvoie la somme d'une expression donnée.
Il peut également être utilisé pour renvoyer la somme de toutes les valeurs distinctes (uniques) dans l'expression.
SUM()
ne fonctionne que sur les colonnes numériques. Les valeurs nulles sont ignorées.
Syntaxe
La syntaxe ressemble à ceci :
SUM ( [ ALL | DISTINCT ] expression )
Il peut également être utilisé avec un OVER
clause :
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
Exemple
Supposons que nous ayons une table appelée Products
avec les données suivantes :
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Résultat :
+------------+---------------------------------+----------------+ | VendorId | ProductName | ProductPrice | |------------+---------------------------------+----------------| | 1001 | Left handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | NULL | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | | 1001 | Right handed screwdriver | 25.99 | +------------+---------------------------------+----------------+
Nous pouvons utiliser la requête suivante pour obtenir la somme de tous les prix.
SELECT SUM(ProductPrice)
FROM Products;
Résultat :
367.20
Ici, les informations de prix sont stockées dans le ProductPrice
colonne, et nous la passons donc comme argument à la SUM()
fonction, qui calcule ensuite la somme et renvoie le résultat.
Valeurs nulles
La SUM()
la fonction ignore les valeurs nulles lors de l'exécution de son calcul.
Si la colonne contient des valeurs nulles, un avertissement peut s'afficher indiquant que les valeurs nulles ont été éliminées.
Par exemple, voici l'avertissement que j'ai reçu lors de l'exécution de l'exemple ci-dessus :
SELECT SUM(ProductPrice)
FROM Products;
Résultat :
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Résultats filtrés
La SUM()
La fonction opère sur les lignes renvoyées par la requête. Donc si vous filtrez les résultats, le résultat de SUM()
reflétera cela.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Résultat :
78.72
Dans ce cas, 78,72 est la somme de tous les produits proposés par le fournisseur spécifié.
Le DISTINCT
Mot clé
Vous pouvez utiliser le DISTINCT
mot clé avec SUM()
pour ne calculer que des valeurs distinctes. Autrement dit, s'il existe des valeurs en double, elles sont traitées comme une seule valeur.
Exemple :
SELECT
SUM(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Résultat :
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Notre tableau contient deux articles avec le même prix (le tournevis pour gaucher et le tournevis pour droitier sont tous deux au prix de 25,99). Le DISTINCT
mot-clé fait que ces deux valeurs sont traitées comme une seule.
Fonctions de la fenêtre
La SUM()
la fonction peut être utilisée avec un OVER
clause pour créer une fonction de fenêtre. Voir SQL SUM()
pour les débutants pour un exemple.