Numérique et Sciences Informatiques > Bases de Données > Langage SQL (Structured Query Language) > Fonctions d'agrégation (COUNT, SUM, AVG, MIN, MAX)

Exercices Corrigés : Fonctions d'Agrégation SQL

Mettez en pratique vos connaissances sur les fonctions d'agrégation SQL (COUNT, SUM, AVG, MIN, MAX) avec une série d'exercices corrigés, conçus pour les élèves de lycée en NSI. Améliorez vos compétences avec des exemples concrets.

Exercice 1 : Statistiques sur les élèves

Soit une table Eleves avec les colonnes id (INT, clé primaire), nom (VARCHAR), age (INT), et classe (VARCHAR). Écrivez les requêtes SQL pour :

  1. Compter le nombre total d'élèves.
  2. Calculer l'âge moyen des élèves.
  3. Trouver l'âge le plus jeune et l'âge le plus âgé.
  4. Compter le nombre d'élèves par classe.

Correction Exercice 1

Voici les requêtes SQL pour résoudre l'exercice 1 :

  1. SELECT COUNT(*) FROM Eleves;
  2. SELECT AVG(age) FROM Eleves;
  3. SELECT MIN(age), MAX(age) FROM Eleves;
  4. SELECT classe, COUNT(*) FROM Eleves GROUP BY classe;

Exercice 2 : Analyse des ventes

Soit une table Ventes avec les colonnes id (INT, clé primaire), produit (VARCHAR), quantite (INT), et prix_unitaire (DECIMAL). Écrivez les requêtes SQL pour :

  1. Calculer le chiffre d'affaires total.
  2. Trouver le produit le plus vendu (en quantité).
  3. Calculer le prix moyen des produits vendus.
  4. Afficher les produits dont le chiffre d'affaires total est supérieur à 1000.

Correction Exercice 2

Voici les requêtes SQL pour résoudre l'exercice 2 :

  1. SELECT SUM(quantite * prix_unitaire) FROM Ventes;
  2. SELECT produit, SUM(quantite) FROM Ventes GROUP BY produit ORDER BY SUM(quantite) DESC LIMIT 1;
  3. SELECT AVG(prix_unitaire) FROM Ventes;
  4. SELECT produit, SUM(quantite * prix_unitaire) AS chiffre_affaires FROM Ventes GROUP BY produit HAVING chiffre_affaires > 1000;

Exercice 3 : Gestion des commandes

Soit une table Commandes avec les colonnes id_commande (INT, clé primaire), id_client (INT, clé étrangère référençant une table Clients), date_commande (DATE), et montant (DECIMAL). Écrivez les requêtes SQL pour :

  1. Compter le nombre total de commandes.
  2. Calculer le montant total des commandes par client.
  3. Trouver le client qui a dépensé le plus (montant total des commandes le plus élevé).
  4. Calculer le montant moyen des commandes par date.

Correction Exercice 3

Voici les requêtes SQL pour résoudre l'exercice 3 :

  1. SELECT COUNT(*) FROM Commandes;
  2. SELECT id_client, SUM(montant) FROM Commandes GROUP BY id_client;
  3. SELECT id_client, SUM(montant) AS total_depense FROM Commandes GROUP BY id_client ORDER BY total_depense DESC LIMIT 1;
  4. SELECT date_commande, AVG(montant) FROM Commandes GROUP BY date_commande;

Ce qu'il faut retenir

  • Les exercices pratiques permettent de consolider la compréhension des fonctions d'agrégation.
  • L'utilisation de GROUP BY et ORDER BY est essentielle pour répondre à des questions complexes.
  • La clause LIMIT permet de sélectionner un nombre limité de résultats (par exemple, le client qui a le plus dépensé).
  • Les alias (AS) permettent de renommer les colonnes pour une meilleure lisibilité.

FAQ

  • Comment trier les résultats d'une requête SQL ?

    Utilisez la clause ORDER BY suivie du nom de la colonne et de l'ordre de tri (ASC pour croissant, DESC pour décroissant). Par exemple, ORDER BY age DESC trie les résultats par âge décroissant.
  • Comment limiter le nombre de résultats retournés par une requête SQL ?

    Utilisez la clause LIMIT suivie du nombre maximum de résultats à retourner. Par exemple, LIMIT 10 retourne les 10 premiers résultats.
  • Comment renommer une colonne dans les résultats d'une requête SQL ?

    Utilisez le mot-clé AS suivi du nouveau nom de la colonne. Par exemple, SUM(montant) AS total renomme la colonne de la somme des montants en 'total'.