Leçon 13 / 17

Calculer des totaux et des valeurs représentatives

15 min SQL — interroger une base de données Gratuit

Objectif : Mesurer un total, une moyenne, une valeur minimale ou une valeur maximale sur des données numériques ou datées.

Vous devez parfois répondre à une question qui ne demande pas la liste des emprunts, mais un indicateur : combien de frais de retard ont été enregistrés, ou quel est le retard moyen ? Pour obtenir ces mesures directement depuis la base, vous pouvez appliquer une fonction à une colonne et récupérer une valeur calculée.

Vous avez déjà utilisé COUNT pour compter des lignes ou des valeurs renseignées. Dans cette leçon, vous allez compléter ces comptages avec SUM, AVG, MIN et MAX, sans modifier les autres fichiers du projet : les nouvelles requêtes sont à ajouter à la suite de requetes.sql.

Additionner des valeurs avec SUM

SUM(colonne) additionne les valeurs numériques d’une colonne. Dans la table retards, frais représente un montant et jours_retard un nombre de jours : vous pouvez donc mesurer le cumul des frais enregistrés et le cumul des jours de retard. Chaque requête ci-dessous renvoie une ligne contenant une seule valeur calculée.

SQL
-- Total des frais et des jours de retard enregistrés
SELECT SUM(frais) AS total_frais
FROM retards;

SELECT SUM(jours_retard) AS total_jours_retard
FROM retards;

L’alias placé après AS donne un nom lisible à la colonne calculée dans le résultat. Par exemple, total_frais désigne la somme de tous les frais présents dans les lignes de retards. La valeur exacte dépend du contenu de votre jeu de données ; elle ne peut pas être déduite du schéma seul.

Calculer une moyenne avec AVG

AVG(colonne) calcule la moyenne des valeurs numériques de la colonne. Pour connaître la durée moyenne des retards enregistrés, appliquez-la à jours_retard. MariaDB peut afficher une moyenne avec plusieurs décimales : si la présentation doit être arrondie, vous pourrez utiliser une fonction d’arrondi dans une requête ultérieure, mais ce n’est pas nécessaire pour obtenir la mesure.

SQL
-- Durée moyenne des retards enregistrés
SELECT AVG(jours_retard) AS moyenne_jours_retard
FROM retards;

Repérer les extrêmes avec MIN et MAX

MIN(colonne) renvoie la plus petite valeur et MAX(colonne) la plus grande. Ces fonctions conviennent aux nombres, mais aussi aux dates : sur une colonne de date, elles indiquent respectivement la date la plus ancienne et la plus récente parmi les valeurs présentes. Vous pouvez ainsi observer l’étendue des dates d’emprunt sans afficher toutes les lignes.

SQL
-- Plus petit et plus grand retard en jours
SELECT
    MIN(jours_retard) AS retard_minimal,
    MAX(jours_retard) AS retard_maximal
FROM retards;

-- Dates d’emprunt la plus ancienne et la plus récente
SELECT
    MIN(date_emprunt) AS emprunt_le_plus_ancien,
    MAX(date_emprunt) AS emprunt_le_plus_recent
FROM emprunts;

Dans la première requête, les deux extrêmes sont calculés sur la même colonne et apparaissent comme deux colonnes du résultat. La seconde s’appuie sur date_emprunt, qui existe dans le schéma de la médiathèque ; elle ne suppose pas l’existence d’une date d’enregistrement du retard. Chaque fonction ignore les valeurs NULL de la colonne examinée. Si aucune valeur exploitable n’existe, l’agrégat renvoie NULL : il ne faut pas confondre ce résultat avec zéro.

Ajouter les mesures à votre fichier

Ajoutez ces requêtes commentées après les comptages déjà présents dans requetes.sql. Gardez les commentaires pour que chaque mesure indique sa question, et exécutez chaque instruction séparément si votre client SQL n’affiche pas plusieurs résultats à la fois. Vous obtenez des indicateurs synthétiques, mais pas encore une comparaison par catégorie ou par période.

À retenir

  • SUM additionne les valeurs numériques d’une colonne.
  • AVG calcule leur moyenne ; MIN et MAX renvoient les extrêmes.
  • Les agrégats peuvent s’appliquer aux colonnes de dates pour obtenir la date la plus ancienne ou la plus récente.
  • Donnez un alias explicite à chaque mesure et interprétez le résultat en fonction du contenu réel de la base.
  • Ajoutez les requêtes à la suite de requetes.sql, sans modifier les autres fichiers du projet.

Dans la prochaine leçon, vous utiliserez GROUP BY et HAVING pour comparer ces indicateurs entre plusieurs groupes de résultats.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.