Skip to content

GROUP BY – Grouper les données

Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 6 minutes


La commande GROUP BY est utilisée en SQL pour grouper plusieurs résultats et utiliser une fonction de totaux sur un groupe de résultats. Sur une table qui contient toutes les ventes d’un magasin, il est par exemple possible de regrouper les ventes par clients identiques et d’obtenir le coût total des achats pour chaque client.


De façon générale, la commande GROUP BY s’utilise de la façon suivante :

SELECT colonne1, fonction(colonne2) FROM table GROUP BY colonne1

💡 Bon à savoir : Cette commande doit toujours s’utiliser après la clause WHERE et avant la clause HAVING (si elles sont présentes).


Prenons en considération une table « achat » qui résume les ventes d’une boutique :

id client tarif date_achat
1 Pierre 102 2012-10-23
2 Simon 47 2012-10-27
3 Marie 18 2012-11-05
4 Marie 20 2012-11-14
5 Pierre 160 2012-12-03

Ce tableau contient une colonne qui sert d’identifiant pour chaque ligne, une autre qui contient le nom du client, le coût de la vente et la date d’achat.

Pour obtenir le coût total de chaque client en regroupant les commandes des mêmes clients, il faut utiliser la requête suivante :

SELECT client, SUM(tarif)
FROM achat
GROUP BY client

La fonction SUM() permet d’additionner la valeur de chaque tarif pour un même client.

Résultat :

client SUM(tarif)
Pierre 262
Simon 47
Marie 38

La manière simple de comprendre GROUP BY, c’est tout simplement d’assimiler qu’il va éviter de présenter plusieurs fois les mêmes lignes. C’est une méthode pour regrouper les données.


Juste à titre informatif, voici ce qu’on obtient de la requête sans utiliser GROUP BY :

SELECT client, SUM(tarif)
FROM achat

Résultat :

client SUM(tarif)
Pierre 262
Simon 47
Marie 38
Marie 38
Pierre 262

Sans GROUP BY, la fonction SUM() s’applique à l’ensemble des lignes et chaque ligne est répétée avec le même total, ce qui est peu pertinent.


Utilisation d’autres fonctions d’agrégation

Section titled “Utilisation d’autres fonctions d’agrégation”

Il existe plusieurs fonctions qui peuvent être utilisées pour manipuler plusieurs enregistrements : ce sont les fonctions d’agrégation statistiques.

Fonction Description Exemple d’utilisation
AVG() Calcule la moyenne d’un ensemble de valeurs AVG(tarif) → panier moyen par client
COUNT() Compte le nombre de lignes concernées COUNT(id) → nombre d’achats par client
MAX() Récupère la plus haute valeur MAX(tarif) → achat le plus cher par client
MIN() Récupère la plus petite valeur MIN(date_achat) → date du premier achat
SUM() Calcule la somme de plusieurs lignes SUM(tarif) → total des achats d’un client

SELECT client, COUNT(*) AS nb_achats
FROM achat
GROUP BY client

Résultat :

client nb_achats
Pierre 2
Simon 1
Marie 2

Panier moyen par client (moyenne des montants)

Section titled “Panier moyen par client (moyenne des montants)”
SELECT client, AVG(tarif) AS panier_moyen
FROM achat
GROUP BY client

Résultat :

client panier_moyen
Pierre 131
Simon 47
Marie 19
SELECT client, MIN(date_achat) AS premiere_commande
FROM achat
GROUP BY client

Résultat :

client premiere_commande
Pierre 2012-10-23
Simon 2012-10-27
Marie 2012-11-05

Il est possible de grouper sur plusieurs colonnes. Par exemple, pour obtenir le total des ventes par client et par mois :

SELECT client, YEAR(date_achat) AS annee, MONTH(date_achat) AS mois, SUM(tarif) AS total
FROM achat
GROUP BY client, YEAR(date_achat), MONTH(date_achat);

(Note : les fonctions YEAR() et MONTH() sont disponibles dans MySQL, d’autres SGBD utilisent EXTRACT.)


  • Toute colonne du SELECT qui n’est pas une fonction d’agrégation doit figurer dans le GROUP BY (sauf dans certains SGBD non stricts comme MySQL en mode par défaut, mais c’est une mauvaise pratique).
  • Utilisez des alias pour les colonnes calculées afin d’améliorer la lisibilité.
  • GROUP BY est souvent utilisé avec ORDER BY pour trier les résultats (par exemple, par total décroissant).

Vous savez désormais comment grouper des données avec GROUP BY et utiliser des fonctions d’agrégation. Mais comment filtrer les groupes, par exemple pour ne garder que les clients ayant dépensé plus de 100€ ?

👉 Chapitre 14 : HAVING – Filtrer les groupes

Bonne continuation !


Junior TSAFACK – 08/08/2026