Numérique et Sciences Informatiques1ère

Agrégations et fonctions SQL
Exercices corrigés

Maîtrisez les agrégations et fonctions SQL : COUNT, SUM, AVG, MIN, MAX, GROUP BY grâce à ces 5 exercices détaillés.

Concepts & Exercices
Σ(fonction(col)) → Résultat
Agrégation de données

Fonctions d'agrégation

COUNT()
Compter les lignes
SUM()
Somme des valeurs
AVG()
Moyenne des valeurs
MIN()/MAX()
Valeur minimale/maximale
SELECT COUNT(*) AS nb_clients, AVG(age) AS moy_age FROM Clients;
Exercice 1
Utiliser COUNT() pour compter les enregistrements
Exercice 2
Calculer la somme avec SUM()
Exercice 3
Calculer la moyenne avec AVG()
Exercice 4
Utiliser MIN() et MAX() pour les extrêmes
Exercice 5
Grouper les données avec GROUP BY
Corrigé : Exercices 1 à 3
1 Fonction COUNT()
Définition :

COUNT() : Fonction d'agrégation qui retourne le nombre de lignes dans un jeu de résultats.

Syntaxe de base :
COUNT(*) : Compte toutes les lignes
COUNT(colonne) : Compte les valeurs non NULL
COUNT(DISTINCT colonne) : Compte les valeurs uniques
-- Compter tous les clients SELECT COUNT(*) AS total_clients FROM Clients;
-- Compter les clients avec email SELECT COUNT(email) AS clients_avec_email FROM Clients;
Étape 1 : Identifier la table à analyser

Déterminer dans quelle table compter les enregistrements

Étape 2 : Choisir le type de comptage

Décider si on compte toutes les lignes ou seulement les non NULL

Étape 3 : Appliquer la fonction COUNT

Utiliser la syntaxe appropriée pour le type de comptage

Étape 4 : Donner un alias au résultat

Utiliser AS pour nommer la colonne de résultat

Étape 5 : Exécuter la requête

Obtenir le résultat du comptage

Réponse finale :

COUNT() permet de compter le nombre de lignes dans un jeu de résultats

Règles appliquées :

COUNT(*) : Compte toutes les lignes, y compris celles avec NULL

COUNT(colonne) : Compte seulement les valeurs non NULL

Performance : COUNT(*) est généralement plus rapide que COUNT(colonne)

2 Fonction SUM()
Définition :

SUM() : Fonction d'agrégation qui calcule la somme des valeurs d'une colonne numérique.

-- Somme des montants des commandes SELECT SUM(montant) AS total_ventes FROM Commandes;
-- Somme des ventes par client SELECT client_id, SUM(montant) AS total_client FROM Commandes GROUP BY client_id;
Sélectionner une colonne numérique
Appliquer la fonction SUM()
Grouper si nécessaire avec GROUP BY
Filtrer les résultats avec HAVING
Nommer le résultat avec AS
Étape 1 : Identifier la colonne à sommer

Sélectionner une colonne de type numérique (INT, DECIMAL, etc.)

Étape 2 : Appliquer la fonction SUM

Utiliser SUM(nom_colonne) dans la clause SELECT

Étape 3 : Gérer les valeurs NULL

SUM ignore automatiquement les valeurs NULL

Étape 4 : Grouper si nécessaire

Utiliser GROUP BY pour sommer par catégories

Étape 5 : Filtrer les résultats

Utiliser HAVING pour filtrer les résultats agrégés

SUM() = Somme des valeurs numériques
Réponse finale :

SUM() calcule la somme des valeurs d'une colonne numérique

Règles appliquées :

Type numérique : SUM ne fonctionne qu'avec des colonnes numériques

NULL ignoré : Les valeurs NULL sont ignorées dans le calcul

GROUP BY : Nécessaire pour sommer par catégories

3 Fonction AVG()
Définition :

AVG() : Fonction d'agrégation qui calcule la moyenne des valeurs d'une colonne numérique.

-- Moyenne des âges des clients SELECT AVG(age) AS moyenne_age FROM Clients;
-- Moyenne des prix par catégorie SELECT categorie, AVG(prix) AS prix_moyen FROM Produits GROUP BY categorie;
Étape 1 : Identifier la colonne à moyenner

Sélectionner une colonne de type numérique

Étape 2 : Appliquer la fonction AVG

Utiliser AVG(nom_colonne) dans la clause SELECT

Étape 3 : Comprendre le calcul

AVG = SUM(valeurs) / COUNT(valeurs non NULL)

Étape 4 : Gérer les valeurs NULL

Les valeurs NULL sont exclues du calcul

Étape 5 : Grouper si nécessaire

Utiliser GROUP BY pour calculer des moyennes par catégorie

Étape 6 : Arrondir si nécessaire

Utiliser ROUND pour limiter le nombre de décimales

AVG() = SUM / COUNT (valeurs non NULL)
Réponse finale :

AVG() calcule la moyenne des valeurs d'une colonne numérique

Règles appliquées :

Type numérique : AVG ne fonctionne qu'avec des colonnes numériques

NULL ignoré : Les valeurs NULL sont exclues du calcul

Division par zéro : AVG retourne NULL si aucune valeur n'est présente

Corrigé : Exercices 4 à 5
4 MIN() et MAX()
Définition :

MIN() et MAX() : Fonctions d'agrégation qui retournent respectivement la valeur minimale et maximale d'une colonne.

-- Prix minimum et maximum des produits SELECT MIN(prix) AS prix_min, MAX(prix) AS prix_max FROM Produits;
-- Date de la première et dernière commande SELECT MIN(date_cmd) AS premiere_commande, MAX(date_cmd) AS derniere_commande FROM Commandes;

Utilisation des fonctions

MIN()
Valeur la plus petite
MAX()
Valeur la plus grande
Étape 1 : Identifier la colonne à analyser

Déterminer la colonne pour laquelle trouver le min/max

Étape 2 : Choisir la fonction appropriée

MIN() pour la plus petite valeur, MAX() pour la plus grande

Étape 3 : Appliquer la fonction

Utiliser MIN(nom_colonne) ou MAX(nom_colonne)

Étape 4 : Grouper si nécessaire

Utiliser GROUP BY pour trouver min/max par catégorie

Étape 5 : Gérer les valeurs NULL

Les valeurs NULL sont ignorées dans le calcul

Étape 6 : Combiner avec d'autres fonctions

Peut être utilisée avec COUNT, SUM, AVG dans la même requête

MIN/MAX = Valeur extrême d'une colonne
Réponse finale :

MIN() et MAX() trouvent les valeurs extrêmes d'une colonne

Règles appliquées :

Any type : Fonctionne avec n'importe quel type de données (numérique, texte, date)

NULL ignoré : Les valeurs NULL sont exclues du calcul

Tri alphabétique : Pour les chaînes, MIN/MAX utilisent l'ordre alphabétique

5 GROUP BY
Définition :

GROUP BY : Clause qui regroupe les lignes ayant les mêmes valeurs dans les colonnes spécifiées pour appliquer des fonctions d'agrégation.

-- Compter les clients par ville SELECT ville, COUNT(*) AS nb_clients FROM Clients GROUP BY ville;
-- Montant total des commandes par mois SELECT YEAR(date_cmd) AS annee, MONTH(date_cmd) AS mois, SUM(montant) AS total_mensuel FROM Commandes GROUP BY YEAR(date_cmd), MONTH(date_cmd);
Étape 1 : Identifier la colonne de regroupement

Déterminer sur quelle(s) colonne(s) grouper les données

Étape 2 : Placer GROUP BY après FROM et WHERE

Respecter l'ordre des clauses SQL

Étape 3 : Listes les colonnes dans SELECT

Toutes les colonnes non agrégées doivent être dans GROUP BY

Étape 4 : Appliquer les fonctions d'agrégation

Utiliser COUNT, SUM, AVG, MIN, MAX sur les sous-groupes

Étape 5 : Filtrer les résultats avec HAVING

Utiliser HAVING au lieu de WHERE pour filtrer les groupes

Étape 6 : Trier les résultats

Utiliser ORDER BY pour trier les groupes

GROUP BY = Regroupement + Agrégation + Tri
Réponse finale :

GROUP BY permet d'appliquer des fonctions d'agrégation par catégories

Règles appliquées :

Ordre des clauses : SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY

Colonne dans SELECT : Toutes les colonnes non agrégées doivent être dans GROUP BY

Filtres : Utiliser HAVING pour filtrer les groupes, WHERE pour les lignes

Cours bien détaillé
f = Σ(xᵢ) / n | f ∈ {COUNT, SUM, AVG, MIN, MAX}
Fonctions d'agrégation
🔢
COUNT() : Compte le nombre de lignes dans un jeu de résultats.
SUM() : Calcule la somme des valeurs numériques.
AVG() : Calcule la moyenne des valeurs numériques.
⬇️
MIN()/MAX() : Trouve les valeurs extrêmes d'une colonne.
💡
Conseil : Utiliser DISTINCT avec COUNT pour compter les valeurs uniques
🔍
Attention : Les fonctions d'agrégation ignorent les valeurs NULL
Astuce : Combiner plusieurs fonctions dans une même requête
📋
Méthode : Utiliser HAVING pour filtrer les résultats agrégés
Vérification : Toujours tester les agrégations avec des données connues
Ordre des clauses SQL :
  • SELECT : Quelles colonnes récupérer
  • FROM : D'où proviennent les données
  • WHERE : Filtre les lignes avant agrégation
  • GROUP BY : Regroupe les lignes par valeurs communes
  • HAVING : Filtre les groupes après agrégation
  • ORDER BY : Trie les résultats finaux
Règles importantes :
  • Les fonctions d'agrégation ne peuvent pas être utilisées dans la clause WHERE
  • Les colonnes non agrégées dans SELECT doivent figurer dans GROUP BY
  • Les valeurs NULL sont ignorées par les fonctions d'agrégation
  • La clause HAVING est utilisée pour filtrer les résultats agrégés
  • GROUP BY est exécuté après WHERE mais avant HAVING et ORDER BY
Agrégations et fonctions SQL Interrogation et manipulation