Les requêtes « regroupement » permettent de regrouper tous les enregistrements (lignes) d’une même table (ou d’une requête), dont le contenu de certains champs est commun, en un seul enregistrement.
Ainsi, dans le cas d’un état de stock de marchandises, la requête ci-après regroupe tous les enregistrements dont le code article (champ Référence) est identique en un seul et additionne les quantités :
SELECT [Stock N].Référence, [Stock N].Désignation, Sum([Stock N].Quantité) AS SommeDeQuantité FROM [Stock N] GROUP BY [Stock N].Référence, [Stock N].Désignation;
Les champs qui servent de critère de regroupement sont mentionnés dans la clause GROUP BY (dans notre exemple, le regroupement est opéré sur les champs Références et Désignation). Les champs qui ne servent pas de critère de regroupement font l’objet d’un calcul à l’aide d’une fonction d’agrégation :
- d’une addition (SUM()) comme dans l’exemple proposé,
- d’une moyenne arithmétique (AVG()),
- d’un dénombrement (COUNT()),
- d’un relevé des valeurs minimales (MIN()) et maximales (MAX())…
Dans cet exemple, le champ Quantité est sommé.
Table d’origine :
Référence | Désignation | Quantité |
150 | PALETTE | 181 |
300 | CHEVRON 6X8 | 1400 |
300 | CHEVROB 6X8 | 208 |
512 | ELINGUES DIAM 12 MM(F.UT: 500KG) | 12 |
516 | ELINGUES DIAM 16 MM(F.UT:1000KG) | 48 |
520 | ELINGUES DIAM 20 MM(F.UT:1600KG) | 64 |
524 | ELINGUES DIAM 24 MM | 15 |
Résultat de la requête :
Référence | Désignation | SommeDeQuantité |
150 | PALETTE | 181 |
300 | CHEVRON 6X8 | 1608 |
512 | ELINGUES DIAM 12 MM(F.UT: 500KG) | 12 |
516 | ELINGUES DIAM 16 MM(F.UT:1000KG) | 48 |
520 | ELINGUES DIAM 20 MM(F.UT:1600KG) | 64 |
524 | ELINGUES DIAM 24 MM | 15 |
Une clause HAVING positionnée à la fin de la requête permettra d’ajouter un critère (à l’aide d’opérateurs de comparaison) afin de restreindre le nombre de lignes compris dans le résultat de la requête. Par exemple, pour ne retenir que les résultats dont la quantité est supérieure à 1 000 :
HAVING (((Sum([Stock N].Quantité))>1000))
Le texte de la requête incluant la clause HAVING prend la forme suivante :
SELECT [Stock N].Référence, [Stock N].Désignation, Sum([Stock N].Quantité) AS SommeDeQuantité FROM [Stock N] GROUP BY [Stock N].Référence, [Stock N].Désignation HAVING (((Sum([Stock N].Quantité))>1000));
Résultat de la requête avec la clause HAVING :
Référence | Désignation | SommeDeQuantité |
300 | CHEVRON 6X8 | 1608 |
Une requête « regroupement » sera utile par exemple pour obtenir une balance à partir des journaux d’écritures comptables.
Le résultat de la requête peut faire l’objet d’un tri avec une clause ORDER BY.
Approfondir le sujet : Maîtriser le langage de requête SQL / Analyse de données


Derniers articles parBenoît RIVIERE (voir tous)
- Projet IXP (v1.21beta) : nouvelle version en ligne - mardi 7 janvier 2025
- Excel : conserver les zéros non significatifs à gauche - dimanche 5 janvier 2025
- Excellente année 2025 ! - mercredi 1 janvier 2025
- Projet IXP (v1.21beta) : contrôles de cohérences et gestion MULTIFEC - lundi 30 décembre 2024
- Joyeuses fêtes de fin d’année ! - mardi 24 décembre 2024
Pingback: SQL : les requêtes UNION – Audit & Systèmes d'Information