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.
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.
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.

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
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

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.

C'est à dire afficher :
- les noms et prénoms des emprunteurs
- et le nombre d'emprunts de cet utilisateur.
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

Votre mission est d'afficher :
- les prénoms et noms des auteurs,
- les titres des livres
- et le nombre de pages des livres.

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

Votre mission est de :
- afficher le prénom et le nom des auteurs
- afficher leur nombre de livres dans la bibliothèque

Mission 5

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

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
Pour trouver celui qui a le plus de quelque chose, on peut :
- trier par ordre décroissant
- et n'afficher que le premier.

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.
Ne cherchez pas à écrire une requête complexe d'un seul coup. Construisez-la progressivement comme dans ces missions :
- SELECT simple + JOIN
- Ajouter GROUP BY + COUNT
- Ajouter AVG
- Ajouter ORDER BY
- Ajouter LIMIT
À chaque étape, vérifiez le résultat. Cette approche évite les erreurs et aide à comprendre ce que chaque clause apporte.
Une solution
Vous devez être connecté pour voir le contenu.