Retour à la liste des articles Articles
6 minutes de lecture

La fonction SQL SUM() expliquée avec 5 exemples pratiques

Les fonctions d'agrégation constituent une part importante de la connaissance de SQL - et il n'y a pas de meilleur endroit pour commencer à les apprendre qu'avec la fonction SUM(). Dans cet article, vous pourrez étendre ou rafraîchir votre SQL grâce à 5 exemples pratiques de la fonction SUM().

Le langage SQL nous permet de faire plus que de sélectionner des valeurs ou des expressions dans des tables. La plupart des opérations sur les bases de données relationnelles utilisent des fonctions d'agrégation comme SUM() pour effectuer des calculs sur les données.

Les fonctions d'agrégation vous permettent de calculer diverses statistiques pour un groupe de lignes. Vous trouverez plus d'informations à leur sujet dans l'article intitulé A Beginner's Guide to SQL Aggregate Functions.

La fonction SUM() additionne toutes les valeurs d'une colonne donnée ou les valeurs renvoyées par une expression (qui peut être composée de nombres, de valeurs de colonnes ou des deux). Il s'agit d'une bonne introduction aux fonctions agrégées de SQL, alors plongeons-y !

Mise en route : Syntaxe de la fonction SUM

Voici la syntaxe de la fonction SUM :

SUM([DISTINCT] column_or_expression)

Comme vous le voyez, cette fonction ne requiert qu'un seul argument : un nom de colonne ou une expression. Les valeurs fournies dans l'argument sont additionnées et renvoyées par la fonction SUM(). Le mot-clé DISTINCT est facultatif ; lorsqu'il est utilisé, SUM() ajoute uniquement les valeurs non répétitives. J'expliquerai ce point plus en détail dans la section suivante.

Tout d'abord, apprenons à connaître les données sur lesquelles nous allons construire nos requêtes SQL SUM().

La table product stocke les données que nous utiliserons pour calculer la somme de valeurs données. Voici un exemple de ses données :

idnamepricequantitycategory
1dress1201clothing
2T-shirt552clothing
3jacket6002clothing
4netbook2100NULLIT
5mouse24NULLIT
6bricks681toys
7wood mobile221toys
8teddy bear70NULLtoys

Exemple 1 : Utilisation de SUM() avec une seule colonne

Si vous voulez additionner des valeurs stockées dans une colonne, utilisez SUM() avec le nom de cette colonne comme argument. Regardez l'exemple ci-dessous :

SELECT 
  SUM(quantity) AS sum_quantity 
FROM product;

Dans cette requête, nous utilisons SUM() seul dans l'instruction SELECT. La fonction SUM() additionne toutes les valeurs de la colonne quantity et renvoie le total comme résultat de la fonction. Le nom de la nouvelle colonne de résultat (c'est-à-dire l'alias) est sum_quantity.

Voici le résultat :

sum_quantity
7

Comme vous le voyez, la somme des valeurs de la colonne quantity du tableau est de 7. product est 7. Si l'une des lignes a un NULL dans cette colonne, SUM() omet cette ligne du calcul. Notez qu'il n'y a qu'une seule ligne dans le résultat : toutes les lignes individuelles ont été "réduites" par SUM() - leurs détails ne sont pas disponibles dans le résultat.

Exemple 2 : Utilisation de SUM() avec une expression

Ensuite, nous allons examiner un exemple qui utilise une expression comme argument de SUM(). Voici la requête :

SELECT 
  SUM(quantity*price) AS total_value 
FROM product;

Et le résultat retourné par celle-ci est :

total_value
1520

Dans ce cas, l'argument de la fonction SUM() est une expression qui calcule la valeur totale de chaque produit : la quantité du produit (la valeur de la colonne quantity) multipliée par son prix (la valeur de la colonne price). Les valeurs totales calculées pour chaque produit sont additionnées et le grand total de leurs valeurs est retourné ; le total_sum est 1520, comme vous pouvez le voir dans le résultat.

Exemple 3 : Utilisation de SUM() avec GROUP BY

En général, vous utilisez la fonction SUM avec la clause GROUP BY. Avec GROUP BY, les valeurs additionnées sont calculées pour un groupe de lignes. Si vous n'êtes pas familier avec GROUP BY, je vous suggère de lire Using GROUP BY in SQL ou How Does SQL GROUP BY Work ? avant de poursuivre avec cet exemple.

Dans la requête ci-dessous, vous pouvez voir combien de produits se trouvent dans chaque catégorie :

SELECT 
  category, 
  SUM(quantity) AS total_quantity 
FROM product
GROUP BY category;

Et le résultat renvoyé par cette requête est :

categorytotal_quantity
clothing5
ITNULL
toys2

Dans ce cas, la colonne catégorie est dans le SELECT parce que nous voulons voir la catégorie pour laquelle la somme est calculée. Vient ensuite la fonction SUM(), qui additionne les valeurs de quantité. L'ajout de la clause GROUP BY signifie que les produits ayant la même valeur dans la colonne catégorie sont placés dans un groupe ; la somme est calculée pour chaque groupe séparément. Enfin, n'oubliez pas que la clause GROUP BY doit toujours venir après FROM.

Remarquez que pour la catégorie IT, la somme calculée est NULL. Cela s'explique par le fait que toutes les lignes qui ont une valeur 'IT' dans la colonne catégorie ont un NULL dans la colonne quantity. La catégorie 'jouets' a un produit avec un NULL dans la colonne quantité, donc les valeurs restantes dans cette catégorie sont additionnées.

Bien entendu, vous pouvez également regrouper des enregistrements et calculer des sommes sur plus d'une colonne.

Exemple 4 : Utilisation de SUM() avec DISTINCT

La fonction SQL SUM() peut également additionner des valeurs uniques (c'est-à-dire non répétitives) uniquement. Pour ce faire, utilisez la fonction SUM avec le mot-clé DISTINCT en argument. Par exemple :

SELECT 
  category, 
  SUM(DISTINCT quantity) 
FROM product
GROUP BY category;

Et le résultat qu'elle renvoie :

categorytotal_quantity
clothing3
ITNULL
toys2

Si vous regardez la base de données, vous verrez qu'il y a cinq articles de vêtements en stock :

namequantitycategory
dress1clothing
T-shirt2clothing
jacket2clothing

Cependant, la requête renvoie un 3 pour la quantité totale de vêtements en stock. Pourquoi ? Parce que '2' apparaît deux fois dans la colonne de quantité des articles de la catégorie vêtements. Lorsque vous utilisez DISTINCT, toute valeur répétée dans la colonne est ignorée.

Notez que le mot-clé DISTINCT vient en premier dans l'argument de la fonction, suivi du nom de la colonne ou de l'expression.

Exemple 5 : Utilisation de SUM() avec HAVING

Vous pouvez utiliser SUM() dans la clause HAVING dans le cadre des critères de filtrage. Par exemple, dans la requête ci-dessous, nous voulons que seules les lignes dont le nombre est supérieur à une certaine quantité apparaissent dans le résultat :

SELECT 
  category, 
  SUM(quantity) AS total_quantity 
FROM product
GROUP BY category
HAVING SUM(quantity)>2;

Et le résultat :

categorytotal_quantity
clothing5

Une seule catégorie a été retournée par la requête : les vêtements. Pourquoi ? Parce que la somme de la quantité de produits doit être supérieure à 2 pour être incluse dans le résultat. La colonne des vêtements (avec un total_quantity de 5) répond à ce critère. Les autres catégories ne sont pas affichées car leurs quantités totales sont inférieures à 2.

Vous voulez tester vos compétences en matière de fonction SQL SUM() ?

Dans cet article, vous avez appris comment fonctionne la fonction SQL SUM(). Vous pouvez l'utiliser pour ajouter toutes les valeurs d'une colonne à toutes les lignes d'un tableau, pour totaliser les résultats d'une expression qui utilise plus d'une colonne et pour additionner les valeurs d'un groupe de lignes. Vous pouvez également utiliser SUM() dans la clause HAVING pour filtrer les données en fonction des valeurs additionnées.

Vous voulez en savoir plus sur SUM()? L'article Comment utiliser CASE WHEN avec SUM() en SQL explique comment utiliser SUM() avec l'expression CASE WHEN. Développez vos connaissances ! Et si vous voulez tester vos compétences en SQL, notre site Web Exercices Pratiques de SQL est une bonne option.

Continuez à apprendre et à pratiquer le SQL !