GROUP BY sur une ou plusieurs colonnes
Regroupez les lignes selon une ou plusieurs colonnes pour produire des sous-totaux et des répartitions par catégorie, puis lisez les plans d’exécution des requêtes GROUP BY.
GROUP BY sur une ou plusieurs colonnes est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Rôle de GROUP BY
GROUP BY répartit les lignes en groupes selon une ou plusieurs valeurs de colonne, puis applique les agrégats à chaque groupe.
Regroupement sur une colonne
Total des commandes par utilisateur :
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;Regroupement sur plusieurs colonnes
Sous-groupes par catégorie et par pays :
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;Toute colonne de SELECT doit être regroupée ou agrégée
Règle du SQL standard :
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY sur une expression
Regroupez selon le résultat d’une expression (par exemple, un compartiment mensuel) :
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY par position ou alias
Vous pouvez regrouper selon la position ou l’alias d’un élément de la liste SELECT (PostgreSQL) :
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionEnsembles de regroupement, ROLLUP, CUBE
Calculez plusieurs regroupements dans une seule requête — idéal pour les sous-totaux :
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalLes groupes vides n’existent pas
GROUP BY renvoie uniquement les groupes qui contiennent au moins une ligne. Si vous voulez obtenir chaque catégorie, y compris celles qui ne comportent aucune commande, effectuez un LEFT JOIN depuis la liste principale, puis agrégez.
GROUP BY et index
Le planificateur peut utiliser une agrégation par hachage (construction d’une table de hachage des groupes) ou une stratégie de tri + regroupement. Les index sur la colonne de regroupement peuvent accélérer la deuxième approche.
Fonctions de fenêtrage ou GROUP BY
GROUP BY regroupe les lignes en une seule ligne par groupe. Les fonctions de fenêtrage ajoutent des colonnes agrégées tout en conservant chaque ligne. Choisissez l’outil approprié — ce sujet est traité dans l’approfondissement des fonctions de fenêtrage.
Alias dans HAVING et WHERE
Ordre logique : FROM → WHERE → GROUP BY → HAVING → SELECT. WHERE ne peut pas accéder aux agrégats ; HAVING le peut.
Récapitulatif
GROUP BY est l’outil incontournable des rapports.
- Chaque colonne de SELECT doit être regroupée ou agrégée
- Regroupez selon des colonnes, des expressions ou des alias
- Utilisez ROLLUP/CUBE/GROUPING SETS pour les tableaux croisés
Vérification rapide
Dans une requête GROUP BY country, la liste SELECT peut-elle inclure une colonne city qui n’est ni agrégée ni regroupée ?
Questions Fréquemment Posées
La leçon « GROUP BY sur une ou plusieurs colonnes » est-elle gratuite ?
Oui — le texte complet de « GROUP BY sur une ou plusieurs colonnes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « GROUP BY sur une ou plusieurs colonnes » ?
Regroupez les lignes selon une ou plusieurs colonnes pour produire des sous-totaux et des répartitions par catégorie, puis lisez les plans d’exécution des requêtes GROUP BY. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « GROUP BY sur une ou plusieurs colonnes » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- COUNT, SUM, AVG, MIN, MAX
- GROUP BY sur une ou plusieurs colonnes
- HAVING contre WHERE
- Pièges courants : les NULL dans les agrégats