Sens Pluriel explore la polysémie des mots à travers les cultures : bouddhisme tibétain, industrie durable, linguistique et bien-être.Explorer nos dossiers →
Linguistique et étymologie

Agrégations et regroupements : les usages courants

Une boutique en ligne peut enregistrer des milliers de commandes, mais un total mensuel révèle plus facilement l’évolution de son activité. En SQL, les fonctions d’agrégation produisent cette synthèse, tandis que le regroupement compare des catégories pertinentes. Pour…

Agrégations et regroupements : les usages courants

Une boutique en ligne peut enregistrer des milliers de commandes, mais un total mensuel révèle plus facilement l’évolution de son activité. En SQL, les fonctions d’agrégation produisent cette synthèse, tandis que le regroupement compare des catégories pertinentes.


Pour les utiliser, il faut savoir lire une instruction SELECT et distinguer les lignes des groupes obtenus. COUNT, SUM, AVG, MIN et MAX répondent à des questions différentes, que GROUP BY et HAVING organisent.


A retenir :


  • Mesures fiables pour suivre ventes, coûts et volumes par période
  • Groupes comparables selon les catégories métier pertinentes
  • Filtres distincts avant et après les calculs collectifs
  • Résultats plus lisibles pour l’analyse de données et la décision

Fonctions d’agrégation SQL : compter, additionner et comparer


Ces indicateurs donnent d’abord une mesure globale, avant que le regroupement ne répartisse les résultats par catégorie. Selon la documentation PostgreSQL, COUNT, SUM, AVG, MIN et MAX calculent des valeurs à partir des lignes sélectionnées.


COUNT, SUM et AVG pour mesurer une activité


Pour commencer, une équipe peut compter ses commandes, totaliser leur montant et calculer leur panier moyen. COUNT(*) compte les lignes, tandis que COUNT(colonne) ignore les valeurs NULL dans cette colonne.

A lire également :  Traduire l'intraduisible : les défis de la traduction depuis le tibétain

SUM additionne les valeurs numériques disponibles et AVG en calcule la moyenne, sans inclure les valeurs NULL. Dans une table de ventes, ces fonctions aident à comparer le volume traité et le montant moyen des transactions.


Un cas pédagogique fictif montre leur complémentarité : une analyste examine le tableau des commandes avant sa réunion hebdomadaire.


« Je compte les commandes pour vérifier le volume, puis j’additionne les montants. La moyenne m’aide à repérer un panier inhabituellement faible. »

Scénario pédagogique fictif


MIN et MAX pour repérer les écarts


Une fois les volumes connus, MIN et MAX révèlent les extrêmes d’une colonne, par exemple le prix le plus bas et le plus élevé. Ces fonctions ignorent également les valeurs NULL, ce qui évite de les traiter comme des nombres.


Selon la documentation officielle de PostgreSQL, ces fonctions font partie des agrégats courants. Elles décrivent les limites observées, mais ne remplacent pas une analyse détaillée des lignes qui produisent ces valeurs.


Pour choisir un indicateur, il faut donc relier la fonction à la question métier, plutôt que de calculer toutes les mesures par réflexe.


Repères des fonctions SQL :


Fonction Résultat Exemple d’usage
COUNT(*) Nombre de lignes Commandes enregistrées
COUNT(colonne) Valeurs non NULL comptées Adresses renseignées
SUM Total des valeurs numériques Chiffre d’affaires
AVG Moyenne des valeurs numériques Panier moyen
MIN / MAX Valeurs extrêmes Prix minimal et maximal


GROUP BY et regroupement des données par catégorie

A lire également :  Durées de conservation : les traduire techniquement

Après les mesures globales, GROUP BY les répartit selon une ou plusieurs colonnes, comme le mois ou le type de produit. Selon la documentation PostgreSQL, les colonnes sélectionnées hors agrégat doivent être regroupées ou apparaître dans une expression agrégée.


Construire une synthèse avec GROUP BY


Pour comparer les ventes par région, une requête regroupe les lignes selon la région, puis calcule SUM pour chaque groupe. Chaque résultat représente alors une catégorie, plutôt qu’une commande individuelle.


Le même principe sert à la segmentation des clients, à la catégorisation des produits ou à la classification des demandes. Une équipe peut ainsi repérer les catégories qui concentrent les volumes, sans confondre cette synthèse avec les données détaillées.


Une responsable fictive pourrait décrire son usage de cette façon, après avoir vérifié les filtres de sa requête.


« Je regroupe les commandes par région pour comparer les montants. Cette vue m’aide à décider où examiner ensuite les résultats détaillés. »

Scénario pédagogique fictif


GROUP BY, DISTINCT et tableaux croisés


GROUP BY peut aussi lister des valeurs distinctes lorsqu’aucune fonction d’agrégation n’est utilisée, mais DISTINCT exprime plus directement cette intention. Pour des croisements entre plusieurs dimensions, les tableaux croisés présentent souvent les résultats sous forme de lignes et de colonnes.


Selon la documentation MySQL, le comportement des agrégats dépend aussi des valeurs présentes et de la structure de la requête. Avant d’interpréter un tableau croisé, vérifiez les catégories retenues et les éventuelles valeurs absentes.


A lire également :  Sigles et acronymes : quand une entreprise choisit le nom d'un concept ancien

Choix de regroupement :


Besoin Clause ou outil Effet recherché
Valeurs uniques d’une colonne DISTINCT Éliminer les doublons du résultat
Mesures par région GROUP BY région Produire un résultat par région
Mesures par région et mois GROUP BY région, mois Comparer deux dimensions
Présentation en matrice Tableau croisé Lire les catégories en lignes et colonnes


Un regroupement bien choisi rend les comparaisons utiles, mais le filtrage détermine aussi quelles lignes et quels groupes participent au résultat.


WHERE et HAVING : filtrer les lignes et les groupes


Une fois les catégories définies, le filtrage affine l’analyse sans confondre les étapes du calcul. WHERE sélectionne les lignes en amont, tandis que HAVING élimine les groupes après l’agrégation.


Utiliser WHERE avant les fonctions d’agrégation


Si l’analyse porte uniquement sur les commandes payées, WHERE peut écarter les autres lignes avant le regroupement. Le SUM obtenu porte alors sur ce sous-ensemble, ce qui change la portée de la mesure.


Cette distinction facilite aussi la consolidation de rapports : appliquer trop tôt un filtre peut exclure des données utiles. Il faut donc vérifier que la condition correspond bien à la question posée.


Un avis pédagogique fictif résume le contrôle à effectuer avant de partager un rapport.


« Je vérifie d’abord quelles lignes WHERE conserve. Ensuite, je contrôle que chaque groupe répond bien à la comparaison attendue. »

Exemple d’avis fictif


Appliquer HAVING aux résultats groupés


Pour ne garder que les régions dépassant un seuil de ventes, HAVING peut tester le résultat de SUM après GROUP BY. Une condition telle que SUM(montant) supérieur à un seuil concerne chaque groupe, non chaque commande.


Les deux clauses peuvent coexister : WHERE réduit les lignes candidates, puis HAVING filtre les groupes calculés. Ce partage rend la requête plus lisible et aide à comprendre pourquoi un groupe apparaît ou disparaît.


Ordre logique des filtres :


  • WHERE : sélection des lignes avant les calculs collectifs
  • GROUP BY : formation des groupes selon les colonnes choisies
  • HAVING : sélection des groupes selon leurs résultats agrégés
  • SELECT : affichage des mesures et dimensions retenues

La documentation PostgreSQL et le manuel de référence MySQL décrivent ces fonctions et clauses dans leurs guides SQL officiels.


Source : PostgreSQL, « Aggregate Functions » ; PostgreSQL, « SELECT » ; MySQL, « Aggregate Functions ». Ces documentations officielles décrivent les comportements SQL évoqués ci-dessus.

À retenir

Un mot qui se comprend dossier après dossier

Qu'il s'agisse de philosophie bouddhiste, de méditation, de culture tibétaine, d'industrie durable, de linguistique ou de bien-être, chaque rubrique raconte une facette différente de la même question : comment un même mot peut porter, à la fois, une pensée millénaire et un usage bien actuel. Rien n'est figé : chaque contexte nouveau peut encore faire évoluer ce sens.

Pour aller plus loin

  • Comparer plusieurs sources avant de juger la portée d'une traduction ou d'une définition
  • Replacer chaque terme dans son contexte culturel réel, pas seulement sa traduction littérale
  • S'intéresser aux usages vivants de la langue autant qu'aux définitions figées
  • Observer comment un même mot évolue d'un domaine à l'autre au fil du temps