Aller au contenu principal

Le mot clé GROUP BY

Notions théoriques

Le mot clé GROUP BY est utilisé en SQL pour regrouper les lignes qui ont les mêmes valeurs dans des colonnes spécifiques en un seul ensemble de résultats.

astuce

Le mot clé GROUP BY est généralement utilisé avec des fonctions d'agrégation (COUNT, MAX, MIN, SUM, AVG) pour effectuer une opération sur chaque groupe de lignes.

La syntaxe de base pour utiliser GROUP BY est la suivante :

SELECT colonne1, colonne2, fonction_d_agrégation(colonne3)
FROM table
GROUP BY colonne1, colonne2;

Dans cette requête, les résultats seront regroupés par les valeurs uniques de colonne1 et colonne2.

remarque

Il est possible d'indiquer plusieurs colonnes pour regouper les lignes avec le mot clé GROUP BY.

Par exemple, dans une base de données où vous avez une table Ventes avec les colonnes Produit, Region et Quantite.

Comment utiliser le mot-clé GROUP BY pour obtenir la somme des Quantite pour chaque Produit dans chaque Region ?

SELECT Produit, Region, SUM(Quantite) FROM Ventes GROUP BY Produit, Region;

Exemple pratique

Nous voulons savoir combien de livres sont écrits par chaque auteur dans notre bibliothèque.

MLD_bibliotheque.png

Voici une requête possible :

SELECT auteurs.nom, COUNT(livres.idlivre)
FROM auteurs
JOIN livres ON auteurs.idauteur = livres.idauteur
GROUP BY auteurs.nom;

Cette requête retournera le nom de chaque auteur et le nombre de livres qu'il a dans la bibliothèque :

Test de mémorisation/compréhension


À quoi sert le mot clé `GROUP BY` en SQL ?


Quelle est la syntaxe de base pour utiliser `GROUP BY` ?


Quelle est la différence entre `GROUP BY` et `ORDER BY` ?


Quelle est la différence entre `WHERE` et `GROUP BY` ?



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

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

Mission 1

MLD_bibliotheque.png

Votre mission est d'afficher :

  • les dates des emprunts
  • et les noms et prénoms des emprunteurs.

Mission 2

Votre mission est de trouver le nombre de livres empruntés par chaque utilisateur.

MLD_bibliotheque.png

C'est à dire afficher :

  • les noms et prénoms des emprunteurs
  • et le nombre d'emprunts de cet utilisateur.


Bonne pratique - Grouper par la cle primaire plutot que par le nom

GROUP BY emprunteurs.nom peut regrouper ensemble deux emprunteurs homonymes. Préférez GROUP BY emprunteurs.idemprunteur pour garantir un groupe par personne. Vous pouvez ensuite afficher le nom dans le SELECT sans problème.

Mission 3

MLD_bibliotheque.png

Votre mission est d'afficher :

  • les prénoms et noms des auteurs,
  • les titres des livres
  • et le nombre de pages des livres.

info

Nous souhaitons maintenant :

  • trouver l'auteur qui a le plus de livres dans la bibliothèque
  • et le nombre de pages moyen de ses livres.

Nous allons réaliser progressivement plusieurs missions pour y arriver...

Mission 4

MLD_bibliotheque.png

Votre mission est de :

  • afficher le prénom et le nom des auteurs
  • afficher leur nombre de livres dans la bibliothèque

Mission 5

MLD_bibliotheque.png

Votre mission est d'afficher :

  • le prénom et le nom de chaque auteur,
  • le nombre de livres de cet auteur
  • et le nombre moyen de pages des livres de cet auteur.

Mission 6

MLD_bibliotheque.png

Votre mission est d'afficher :

  • le prénom et le nom de chaque auteur,
  • le nombre de livres de cet auteur
  • et le nombre moyen de pages des livres de cet auteur
  • trier du plus grand nombre de livres au plus petit nombre de livres.

Mission 7

astuce

Pour trouver celui qui a le plus de quelque chose, on peut :

  • trier par ordre décroissant
  • et n'afficher que le premier.

MLD_bibliotheque.png

Votre mission est de trouver :

  • l'auteur qui a le plus de livres dans la bibliothèque
  • et le nombre de pages moyen de ses livres.

Bonne pratique - Construire une requete complexe progressivement

Ne cherchez pas à écrire une requête complexe d'un seul coup. Construisez-la progressivement comme dans ces missions :

  1. SELECT simple + JOIN
  2. Ajouter GROUP BY + COUNT
  3. Ajouter AVG
  4. Ajouter ORDER BY
  5. Ajouter LIMIT

À chaque étape, vérifiez le résultat. Cette approche évite les erreurs et aide à comprendre ce que chaque clause apporte.

Une solution