SQL GROUP BY

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 :

idclienttarifdate
1Pierre1022012-10-23
2Simon472012-10-27
3Marie182012-11-05
4Marie202012-11-14
5Pierre1602012-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 :

clientSUM(tarif)
Pierre262
Simon47
Marie38

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 :

clientSUM(tarif)
Pierre262
Simon47
Marie38
Marie38
Pierre262

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.

Partager