SUM
SUM([DISTINCT] expr)
Additionne les valeurs de l’expression dans les lignes du groupe. Les valeurs NULL sont ignorées. S’il n’y a aucune ligne, renvoie NULL et non 0.
Paramètres
- expr – un nombre, une colonne ou un calcul (par exemple quantity * price).
- DISTINCT – facultatif, n’additionne que les valeurs différentes.
Exemples
Les exemples avec les tables customers, products et orders utilisent la base de données d’exemple de la série Bases du SQL.
SELECT SUM(o.quantity) AS pieces, SUM(o.quantity * p.price) AS revenue FROM orders o JOIN products p ON p.id = o.product_id;
+--------+---------+ | pieces | revenue | +--------+---------+ | 15 | 202.00 | +--------+---------+
Le chiffre d’affaires par catégorie de produits :
SELECT p.category, SUM(o.quantity * p.price) AS revenue FROM orders o JOIN products p ON p.id = o.product_id GROUP BY p.category ORDER BY revenue DESC;
+-------------+---------+ | category | revenue | +-------------+---------+ | Drinks | 127.00 | | Accessories | 49.00 | | Tableware | 26.00 | +-------------+---------+
Sans lignes, la somme vaut NULL – IFNULL en fait un zéro :
SELECT SUM(quantity) AS unhandled, IFNULL(SUM(quantity), 0) AS handled FROM orders WHERE customer_id = 99;
+-----------+---------+ | unhandled | handled | +-----------+---------+ | NULL | 0 | +-----------+---------+
Points d’attention
- Un résultat vide donne NULL et non 0. Dans les récapitulatifs et les calculs ultérieurs, utilisez IFNULL(SUM(…), 0).
- Additionnez les montants à partir de colonnes DECIMAL – la somme est exacte. FLOAT et DOUBLE introduisent de petites imprécisions.