L’une des commandes SQL les plus utiles pour le Data Analyst est GROUP BY. Elle autorise, en toute simplicité, la génération de statistiques avancées à partir de catégories. Autant le dire, c’est une des 10 commandes que vous utiliserez le plus, donc autant savoir de quoi il s'agit.
Les atouts de SQL ne sont plus à démontrer. Ce langage offre un niveau d’abstraction hors pair pour analyser de vastes volumes d’information. Quel que soit le logiciel de base de données utilisé (MySQL, Ingres, Oracle Database, Microsoft SQL Server, PostgreSQL, SQLite, Firebird…), le data analyst sait qu’il obtiendra le résultat désiré sans avoir à en programmer la logique précise.
Comment regrouper les informations d’une base de données ?
S’il est une commande particulièrement importante et fort appréciable, c’est GROUP BY. Elle regroupe des informations d’une base selon une colonne particulière, à partir de laquelle, il sera possible d’obtenir des informations statistiques : somme, maximum, minimum, moyenne, etc.
Pour mieux appréhender ce concept, le plus simple est de partir d’un exemple. Voici un extrait d’une table appelée Personnel.
Nom | Service | Salaire |
---|---|---|
Paul | Finances | 3 000 |
Ray | Ventes | 2 500 |
Julia | Finances | 3 200 |
Dan | Marketing | 4 300 |
Josie | Ventes | 2 200 |
Donna | Finances | 2 700 |
Si nous voulions obtenir la somme des salaires par service, il suffirait d’utiliser une séquence telle que celle-ci :
SELECT Service, SUM(Salaire)
FROM Personnel
GROUP BY Service
ORDER BY Service;
Dans cet exemple, nous regroupons la table selon la colonne Service et demandons à obtenir la somme des salaires pour chacun d’entre eux.
Nous obtiendrions en réponse – sur l’échantillon indiqué plus haut :
Finances | 8 900 |
---|---|
Marketing | 4 300 |
Ventes | 4 700 |
Comment utiliser la clause HAVING BY ?
HAVING BY complète la commande GROUP BY en ouvrant la possibilité d’indiquer une condition. Ainsi, dans l’exemple ci-dessous, nous souhaitons afficher la moyenne des salaires (la fonction AVG) mais uniquement si cette moyenne est supérieure à 2500 :
SELECT Service, AVG(Salaire)
FROM Personnel
GROUP BY Service
HAVING AVG(Salaire) > 2500
ORDER BY Service;
Nous obtenons en résultat :
Finances | 2 967 |
---|---|
Marketing | 4 300 |
Et voilà ! C’est aussi simple que cela. La facilité avec laquelle de telles opérations sont mises en œuvre témoigne des qualités du langage SQL.