Agrégation et Regroupement en SQL
Glissez pour afficher le menu
L'agrégation SQL utilise la clause GROUP BY pour organiser les données brutes en lignes de synthèse. En utilisant des fonctions telles que SUM(), AVG() et COUNT(), il est possible de transformer des millions de lignes en indicateurs métier exploitables directement dans une cellule SQL.
Pour beaucoup, SQL est le langage le plus naturel pour résumer des données. La syntaxe est très lisible et suit un déroulement logique : choisir les catégories, sélectionner les calculs, puis définir les groupes. Dans ce chapitre, la vue temporaire créée précédemment sera utilisée pour effectuer les mêmes agrégations qu'en Python, mais avec la simplicité de SQL.
La clause GROUP BY
En SQL, toute colonne qui n'est pas « mathématiquement résumée » doit être incluse dans l'instruction GROUP BY à la fin de la requête. Cela indique au moteur SQL comment segmenter précisément les données.
SELECT cut, COUNT(*)
FROM diamond_view
GROUP BY cut
Utilisation des fonctions d'agrégation intégrées
SQL propose plusieurs fonctions standard pour effectuer des calculs sur les colonnes numériques :
- SUM() : addition de toutes les valeurs de la colonne ;
- AVG() : calcul de la moyenne ;
- MIN() / MAX() : recherche de la valeur la plus basse ou la plus élevée ;
- COUNT() : retourne le nombre de lignes.
%sql
SELECT
cut,
SUM(x),
AVG(y)
FROM diamond_view
GROUP BY cut
Attribution pour des rapports professionnels
Par défaut, SQL peut nommer vos colonnes de résultat comme sum(Total_Profit). Pour rendre votre sortie adaptée à un tableau de bord professionnel, utilisez le mot-clé AS afin de renommer ces colonnes avec des intitulés plus explicites.
%sql
SELECT
cut,
SUM(x) AS Total_Length,
MAX(y) AS Highest_Diamond_Value
FROM diamond_view
GROUP BY cut
Filtrage des données agrégées : la clause HAVING
Une erreur courante consiste à essayer de filtrer un résultat agrégé avec WHERE. En SQL, WHERE filtre les lignes individuelles avant leur regroupement. Si vous souhaitez filtrer les résultats après leur agrégation (par exemple, n'afficher que les régions avec plus de 1 000 000 $ de profit), il faut utiliser la clause HAVING.
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
HAVING Total_Length > 4000
Tri des Résumés
Pour mettre en valeur vos analyses, utilisez toujours ORDER BY. Cela permet de classer vos résultats, par exemple en affichant en haut du tableau les régions les plus rentables.
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
ORDER BY Total_Length DESC
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion