Imagine... T’as une liste de courses de supermarché longue comme le bras. Tu veux savoir combien t’as claqué au final. Tu vas pas tout additionner à la main, non ? Ben les caissiers, eux, ils ont tout dans leur base de données. Du coup, tu reçois ton ticket avec le bon total. Et sûrement, quelque part dans leur appli, c’est notre héroïne du jour qui bosse pour eux — la fonction SUM() ! C’est une fonction d’agrégation qui permet d’additionner les valeurs d’une colonne de type numérique.
Syntaxe de SUM()
La fonction SUM() est aussi simple que son nom, mais on va quand même tout décortiquer :
SELECT SUM(colonne)
FROM table;
La fonction prend toutes les valeurs de la colonne indiquée et les additionne. Mais soyons clairs : pas de magie, tu ne pourras pas additionner du texte ou des dates ici ! Juste des nombres.
Exemples d’utilisation de SUM()
On commence avec un exemple simple. On va bosser avec la table salaries, qui stocke les salaires des employés :
| employee_id | salary |
|---|---|
| 1 | 50000 |
| 2 | 60000 |
| 3 | 55000 |
| 4 | 75000 |
Exemple 1 : Additionner tous les salaires
Tu veux savoir la masse salariale totale de la boîte. Voilà comment faire :
SELECT SUM(salary) AS total_salary
FROM salaries;
Résultat :
| total_salary |
|---|
| 240000 |
Qu’est-ce qui s’est passé ici ? PostgreSQL a additionné toutes les valeurs de la colonne salary (50000 + 60000 + 55000 + 75000) et a renvoyé le résultat dans une nouvelle colonne appelée total_salary.
Exemple 2 : Additionner avec une condition
Imaginons que tu veux connaître le total des salaires uniquement pour les employés qui gagnent plus de 55 000. On ressort notre opérateur préféré WHERE :
SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;
Résultat :
| high_salary_total |
|---|
| 135000 |
Qu’est-ce qui s’est passé là ? D’abord, PostgreSQL a appliqué le filtre WHERE salary > 55000, donc il ne garde que les lignes avec 60000 et 75000. Ensuite, il additionne ces deux salaires (60000 + 75000).
3. Particularités de SUM()
Comment NULL influence SUM() ? Comme on l’a déjà vu, NULL c’est “rien”, et SUM() ne le prend pas en compte dans les calculs. Regarde cette table :
| employee_id | salary |
|---|---|
| 1 | 50000 |
| 2 | 60000 |
| 3 | NULL |
| 4 | 75000 |
Si on veut connaître la masse salariale totale :
SELECT SUM(salary) AS total_salary
FROM salaries;
Résultat :
| total_salary |
|---|
| 185000 |
Pourquoi “185000” et pas “NULL” ? PostgreSQL ignore tout simplement NULL quand il fait la somme.
Exemples de requêtes avancées avec SUM()
Exemple 1 : Addition et filtrage dans une seule requête
Imagine une table sales qui stocke les données de ventes. Voilà sa structure :
| product_id | amount |
|---|---|
| 1 | 150 |
| 2 | 200 |
| 3 | NULL |
| 1 | 100 |
Tu veux savoir le total des ventes amount juste pour le premier produit product_id = 1 :
SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;
Résultat :
| total_sales |
|---|
| 150 |
Exemple 2 : Somme et calculs supplémentaires
On reprend la table salaries. Tu veux savoir de combien la masse salariale dépasse 200 000 :
SELECT SUM(salary) - 200000 AS surplus
FROM salaries;
Résultat :
| surplus |
|---|
| 40000 |
Erreurs fréquentes avec SUM()
Utiliser SUM() sur des données non numériques : si tu essayes d’additionner, par exemple, des valeurs textuelles, tu vas avoir une erreur. Fais gaffe et vérifie bien le type de données de ta colonne.
Ignorer NULL : souvent, les débutants oublient que NULL n’est pas pris en compte dans les calculs. Ça peut donner des résultats chelous.
GO TO FULL VERSION