Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonction SUM() dans SQL Server

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.