Aller au contenu principal

Les fonctions d'agrégation

Notions théoriques

Les fonctions d'agrégation en SQL sont utilisées pour effectuer des calculs sur un ensemble de valeurs et retourner une seule valeur.

Elles sont souvent utilisées avec le mot clé GROUP BY (que nous étudierons plus tard).

Voici une présentation des principales fonctions d'agrégation :

  • COUNT(): Cette fonction retourne le nombre de lignes qui correspondent à une condition spécifiée.

  • MAX(): Cette fonction retourne la valeur la plus élevée d'une colonne sélectionnée.

  • MIN(): Cette fonction retourne la valeur la plus basse d'une colonne sélectionnée.

  • SUM(): Cette fonction retourne la somme totale d'une colonne numérique.

  • AVG(): Cette fonction retourne la valeur moyenne d'une colonne numérique.

Exemple pratique

Prenons un exemple avec la base de données de notre bibliothèque.

MLD_bibliotheque.png

Supposons que nous voulons connaître le nombre total de livres, le livre le plus récent, le livre le plus ancien, la somme des pages et la moyenne des pages. Nous pourrions utiliser des requêtes comme celles-ci :

SELECT COUNT(id), MAX(année), MIN(année), SUM(pages), AVG(pages)
FROM livres;

Cette requête retournera le nombre total de livres, l'année du livre le plus récent, l'année du livre le plus ancien, la somme des pages de tous les livres et la moyenne des pages.

Test de mémorisation/compréhension


Que fait la fonction `COUNT()` en SQL ?


Que fait la fonction `MAX()` en SQL ?


Que fait la fonction `MIN()` en SQL ?


Que fait la fonction `SUM()` en SQL ?


Que fait la fonction `AVG()` en SQL ?



TP pour réfléchir et résoudre des problèmes

Pour ce TP, nous allons continuer à explorer la base de données de la bibliothèque.

Télécharger le fichier 'cdi.sql' - Télécharger le MCD


Mission 1

MLD_bibliotheque.png

Votre mission est de trouver le nombre total de livres dans la bibliothèque.


Bonne pratique - Nommer les colonnes calculées avec AS

Lorsqu'on utilise une fonction d'agrégation (COUNT, SUM, AVG...), la colonne résultante n'a pas de nom explicite. Utilisez toujours l'alias AS pour lui donner un nom lisible. COUNT(*) AS Nombre_de_livres est bien plus lisible que COUNT(*) dans le résultat.


Mission 2

MLD_bibliotheque.png

Votre mission est de trouver le nombre de pages du livre qui a le plus de pages.


Bonne pratique - Combiner plusieurs fonctions d'agrégation

Il est possible d'utiliser plusieurs fonctions d'agrégation dans une seule requête :

SELECT COUNT(*), MAX(nbpages), MIN(nbpages), AVG(nbpages)
FROM livres;

Cela évite d'exécuter plusieurs requêtes séparées et offre une vue d'ensemble en un seul appel.

Une solution