Cours SQL et MySQL · Module 6: Agrégations et regroupements

GROUP BY - regrouper les données

2 min de lecture
Dans cette leçon3

Jusqu'ici, nous avons compté tous les livres à la fois. Mais que faire si nous voulons les compter séparément pour chaque catégorie ? C'est ici qu'entre en scène le sortilège le plus puissant de cette chambre - GROUP BY.

Qu'est-ce que le regroupement ?

GROUP BY divise les lignes en groupes qui partagent la même valeur dans une colonne choisie, puis te permet de calculer un agrégat pour chaque groupe séparément.

Imagine prendre tous les parchemins d'un rayon et les répartir en piles séparées - une pile par catégorie. Puis tu comptes chaque pile individuellement.

1SELECT kategoria_id, COUNT(*)
2FROM ksiazki
3GROUP BY kategoria_id;

Cela signifie : « Pour chaque catégorie, donne son numéro et le nombre de livres ». Le résultat est une ligne par catégorie :

kategoria_idCOUNT(*)
142
218
390

La règle : SELECT et GROUP BY

Voici une règle importante : seuls les éléments suivants peuvent apparaître dans la liste SELECT :

  • les colonnes listées dans GROUP BY (ici : kategoria_id),
  • et les fonctions d'agrégat (ici : COUNT(*)).

Pourquoi ? Parce que chaque ligne de résultat représente tout un groupe. La question « quel est le titre de ce groupe » n'a pas de sens - un groupe contient plusieurs titres.

Autres exemples de regroupement

1-- Prix moyen des livres dans chaque catégorie
2SELECT kategoria_id, AVG(cena)
3FROM ksiazki
4GROUP BY kategoria_id;
1-- Combien d'auteurs viennent de chaque pays
2SELECT kraj, COUNT(*)
3FROM autorzy
4GROUP BY kraj;

GROUP BY transforme un immense rayon en un rapport clair. C'est le cœur de l'analyse de données !

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. À quoi sert la clause GROUP BY ?

  2. 2. Quelles colonnes peuvent apparaître dans la liste SELECT quand on utilise GROUP BY ?

Voici 2 des 3 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Éditeur de code

    Écris une requête qui, pour chaque catégorie (la colonne kategoria_id), compte le nombre de livres. Sélectionne la colonne kategoria_id et COUNT(*), et regroupe le résultat par kategoria_id.

  • Tri vertical

    Ordonne les clauses d'une simple requête de regroupement dans le bon ordre (de haut en bas) :

  • Tri horizontal

    Ordonne les éléments sur une seule ligne pour former la liste SELECT qui compte les auteurs regroupés par pays :

  • Clique dans l'ordre

    Clique sur les éléments dans l'ordre pour construire une requête qui calcule le prix moyen des livres dans chaque catégorie :

  • Tri horizontal

    Ordonne les éléments sur une seule ligne pour former une clause qui regroupe par catégorie :