Dans le langage SQL, la fonction d’agrégation SUM() permet de calculer la somme totale d’une colonne contenant des valeurs numériques. Cette fonction ne fonction que sur des colonnes de types numériques (INT, FLOAT …) et n’additionne pas les valeurs NULL.
Syntaxe
La syntaxe pour utiliser cette fonction SQL peut être similaire à celle-ci:
SELECT SUM(nom_colonne) FROM table
Cette requête SQL permet de calculer la somme des valeurs contenu dans la colonne “nom_colonne”.
A savoir : Il est possible de filtrer les enregistrements avec la commande WHERE pour ne calculer la somme que des éléments souhaités.
Exemple
Imaginons un système qui gère des factures et enregistre chaque achat dans une base de données. Ce système utilise une table “facture” contenant une ligne pour chaque produit. La table ressemble à l’exemple ci-dessous :
Table facture :
id | facture_id | produit | prix |
---|---|---|---|
1 | 1 | calculatrice | 17 |
2 | 1 | agrafeuse | 4 |
3 | 1 | ciseaux | 3 |
4 | 1 | agenda | 15 |
5 | 2 | calculatrice | 17 |
6 | 2 | agenda | 15 |
Somme avec WHERE
Pour calculer le montant de la facture n°1 il est possible d’utiliser la requête SQL suivante:
SELECT SUM(prix) AS prix_total FROM facture WHERE facture_id = 1
Résultat :
prix_total |
---|
39 |
Ce résultat démontre bien que tous les achats de la facture n°1 représente un montant de 39€ (somme de 17€ + 4€ + 3€ + 15€).
Somme avec GROUP BY
Pour calculer la somme de chaque facture, il est possible de grouper les lignes en se basant sur la colonne “facture_id”. Un tel résultat peut être obtenu en utilisant la requête suivante:
SELECT facture_id, SUM(prix) AS prix_total FROM facture GROUP BY facture_id
Résultat :
facture_id | prix_total |
---|---|
1 | 39 |
2 | 32 |
Ce résultat montre bien qu’il est possible de déterminer le prix total de chaque facture en utilisant la fonction d’agration SUM().