Les fonctions d'agrégation... Ces trucs-là, c'est vraiment de la magie dans le monde de l'analyse de données ! Elles te permettent de transformer des millions de lignes de données en résultats compacts et clairs. Grâce à elles, tu peux compter, trouver des minimums et des maximums, faire des moyennes et plein d'autres opérations. Allez, on va tout décortiquer ensemble.
Les fonctions d'agrégation — ce sont des fonctions spéciales SQL qui bossent sur des groupes de lignes et te renvoient un seul résultat. Pour faire une analogie, c'est comme si tu rassemblais toutes les stats sur ton café du matin, genre : combien de tasses t'as bu cette semaine, si t'as mis du sucre ou combien de jours d'affilée t'as ajouté de la crème.
Exemples de problèmes que les fonctions d'agrégation résolvent :
- Compter le nombre total d'enregistrements dans une table.
- Trouver les valeurs minimales ou maximales dans une colonne numérique.
- Faire la somme des valeurs dans une des colonnes.
- Calculer la moyenne de toutes les valeurs d'une colonne.
- Extraire les valeurs uniques.
Comment ça marche "sous le capot" ?
SQL exécute une fonction d'agrégation après avoir sélectionné les données dans SELECT. Par exemple, quand tu utilises SUM() ou AVG(), SQL commence par récupérer les données, puis il fait le calcul juste sur les lignes sélectionnées.
Les fonctions d'agrégation principales dans PostgreSQL
Passons à la pratique et voyons le top 5 de nos héros :
COUNT()— compte le nombre de lignes.SUM()— fait la somme des valeurs d'une colonne numérique.AVG()— calcule la moyenne.MIN()— trouve la valeur minimale.MAX()— trouve la valeur maximale.
Exemples d'utilisation des fonctions d'agrégation
- Compter les lignes avec
COUNT()
La fonction COUNT() te permet de compter le nombre total de lignes dans une table ou le nombre de valeurs non nulles dans une colonne précise.
Exemple : imaginons qu'on a une table students qui stocke des infos sur les étudiants :
| id | name | age | grade |
|---|---|---|---|
| 1 | Otto Art | 20 | 85 |
| 2 | Maria Chi | 22 | 90 |
| 3 | Alex Lin | 21 | 78 |
| 4 | Anna Song | 23 | NULL |
Comptons le nombre total d'étudiants :
SELECT
COUNT(*) AS total_students
FROM students;
Résultat :
| total_students |
|---|
| 4 |
Maintenant, comptons combien d'étudiants ont une grade renseignée :
SELECT
COUNT(grade) AS students_with_grades
FROM students;
Résultat :
| students_with_grades |
|---|
| 3 |
Pourquoi ça ? Parce que COUNT(column) ignore les valeurs NULL.
- Faire une somme avec
SUM()
La fonction SUM() sert à additionner toutes les valeurs d'une colonne numérique.
Exemple : voyons combien de points nos étudiants ont accumulé au total.
SELECT
SUM(grade) AS total_grades
FROM students;
Résultat :
| total_grades |
|---|
| 253 |
Remarque : Si y'a des NULL dans la colonne, ils sont juste ignorés dans la somme.
- La moyenne avec
AVG()
La fonction AVG() calcule la moyenne de toutes les valeurs numériques d'une colonne.
Exemple : calculons la moyenne des notes des étudiants.
SELECT
AVG(grade) AS average_grade
FROM students;
Résultat :
| average_grade |
|---|
| 84.33 |
T'as peut-être remarqué que les NULL sont encore ignorés.
- Minimum et maximum avec
MIN()etMAX()
Parfois, tu veux trouver la plus petite ou la plus grande valeur. Pour ça, y'a MIN() et MAX().
Exemple : trouvons l'étudiant le plus jeune et le plus âgé.
SELECT
MIN(age) AS youngest_student,
MAX(age) AS oldest_student
FROM students;
Résultat :
| youngest_student | oldest_student |
|---|---|
| 20 | 23 |
On parlera plus en détail de ces fonctions dans les prochaines leçons.
Découverte de NULL
On va bientôt faire une leçon spéciale sur NULL, mais en très bref, NULL c'est l'absence de valeur. Rien. Le vide. Le néant, tout simplement !
Imaginons qu'on a une table students qui stocke des infos sur les étudiants :
| id | name | age | grade | hobbie |
|---|---|---|---|---|
| 1 | Otto Art | 20 | 85 | |
| 2 | Maria Chi | 22 | 90 | Danse |
| 3 | Alex Lin | 21 | 78 | |
| 4 | Anna Song | 23 |
Le nom et l'âge sont toujours là, mais la note et le hobbie peuvent manquer. Si une cellule du tableau n'a vraiment aucune valeur, on dit qu'elle contient NULL. NULL ce n'est ni un nombre ni une chaîne, c'est un code spécial qui veut dire qu'il n'y a vraiment aucune valeur.
GO TO FULL VERSION