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ésultat. Sur une table qui contient toutes les ventes d’un magasin, il est par exemple possible de liste regrouper les ventes par clients identiques et d’obtenir le coût total des achats pour chaque client.
Syntaxe d’utilisation de GROUP BY
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
A noter : cette commande doit toujours s’utiliser après la commande WHERE et avant la commande HAVING.
Exemple d’utilisation
Prenons en considération une table “achat” qui résume les ventes d’une boutique :
id | client | tarif | date |
---|---|---|---|
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. Le résultat sera donc le suivant :
client | SUM(tarif) |
---|---|
Pierre | 262 |
Simon | 47 |
Marie | 38 |
La manière simple de comprendre le 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 éviter les doublons.
Juste à titre informatif, voici ce qu’on obtient de la requête sans utiliser GROUP BY.
Requête :
SELECT client, SUM(tarif) FROM achat
Résultat :
client | SUM(tarif) |
---|---|
Pierre | 262 |
Simon | 47 |
Marie | 38 |
Marie | 38 |
Pierre | 262 |
Utilisation d’autres fonctions de statistiques
Il existe plusieurs fonctions qui peuvent être utilisées pour manipuler plusieurs enregistrements, il s’agit des fonctions d’agrégations statistiques, les principales sont les suivantes :
- AVG() pour calculer la moyenne d’un set de valeur. Permet de connaître le prix du panier moyen pour de chaque client
- COUNT() pour compter le nombre de lignes concernées. Permet de savoir combien d’achats a été effectué par chaque client
- MAX() pour récupérer la plus haute valeur. Pratique pour savoir l’achat le plus cher
- MIN() pour récupérer la plus petite valeur. Utile par exemple pour connaître la date du premier achat d’un client
- SUM() pour calculer la somme de plusieurs lignes. Permet par exemple de connaître le total de tous les achats d’un client
Ces petites fonctions se révèlent rapidement indispensable pour travailler sur des données.