Accueil     Recherche | Plan     Technique | Liens | Actualités | Formation | Emploi | Forums | Base  
TUTORIEL cerig.efpg.inpg.fr 
 
Vous êtes ici : Accueil > Formation > Tutoriels > Bases de données relationnelles > La requête de regroupement   Révision : 19 septembre 2005
 
Visitez le site Web de notre établissement ! Les bases de données relationnelles    Chapitre précédent : la notion de jointure   
Chap.
précéd.
   Plan du tutoriel   
Plan du
tutoriel
   Liste des tutoriels   
Liste des
tutoriels
   Chapitre suivant : les doublons   
Chap.
suivant
Jean-Claude SOHM
(janvier 2003)

Chapitre 14 : la requête de regroupement

1- Introduction

La requête de regroupement est un important outil d'analyse et de synthèse. Pour cette raison, nous lui consacrons un chapitre entier. Le terme "Requête de regroupement" est le plus courant , mais on rencontre aussi "Requête d'agrégation", qui est synonyme.

Les requêtes de regroupement sont très utilisées dans l'analyse des résultats comptables et financiers. Comme nous le verrons dans le chapitre suivant, elles sont aussi utilisées pour le comptage et l'élimination des doublons.

La notion de regroupement déborde le cadre des seules requêtes. Nous la retrouverons également dans les états et les formulaires.

Comme pour les autres chapitres de ce tutoriel (ou tutorial, ou cours en ligne), nous utilisons le SGBD Access comme support pratique.

 

2 - La notion de regroupement

Créons une table intitulée "Résultats", contenant le chiffre d'affaires journalier d'une entreprise possédant trois agences. Le champ "Date" est du type "Date/Heure", le champ "Agence" du type texte (10 caractères), et le champ CA (Chiffre d'Affaires) du type monétaire (format euro). Introduisons quelques valeurs dans la table, qui prend alors l'aspect représenté ci-dessous.

Date Agence CA
06/01/2003 Nord 927,02 €
06/01/2003 Sud 1 098,46 €
06/01/2003 Est 561,29 €
07/01/2003 Nord 1 385,55 €
07/01/2003 Est 681,09 €
07/01/2003 Sud 1 401,56 €

Pour juger les performances de l'entreprise, ces données brutes sont malcommodes. Un décideur a besoin du chiffre d'affaires non seulement au jour le jour, mais aussi à la semaine, au mois et pour l'exercice annuel. Il le veut toutes agences confondues pour juger des performances de l'entreprise. Il le veut aussi agence par agence, pour juger des performances de ces dernières (le responsable de l'agence Est va prendre un savon). Et il ne veut pas être obligé de sortir sa calculette pour regrouper les chiffres qui l'intéressent ; le regroupement doit être effectué par le SGBD.

Pour l'exemple très simple que nous avons choisi, deux regroupements du chiffre d'affaires sont possibles :

Quand peut-on envisager d'effectuer un regroupement dans une table ?

Quelle opération peut-on envisager quand on effectue un regroupement ? La nature de cette opération dépend du type des données à regrouper :

Nous voyons tout de suite qu'une requête de regroupement met en jeu le plus souvent deux colonnes :

La mise au point d'une requête de regroupement peut s'avérer délicate, et il faut garder en mémoire les observations suivantes :

Il résulte de ces considérations qu'une requête de regroupement met généralement en jeu un nombre très restreint de champs. En fait, il est fortement conseillé de commencer la mise au point d'une requête de regroupement sur deux colonnes seulement, et que ces deux colonnes appartiennent à la même table (ou à la même feuille de données).

 

3 - La création de la requête

Nous allons créer le premier regroupement envisagé au paragraphe précédent (calcul du CA quotidien de l'entreprise). Pour ne pas nous tromper, nous allons opérer de manière méthodique.

Première étape. Elle consiste à ouvrir la fenêtre de définition d'une requête, et à y introduire la table sur laquelle on veut effectuer l'opération de regroupement (ici "Résultats").

Seconde étape. Elle consiste à introduire dans la grille le champ sur lequel s'effectue le regroupement. Comme nous cherchons à calculer des CA quotidiens, ce champ ne peut être que la date. Nous introduisons donc le champ "Date" dans la grille de création de la requête.

Troisième étape. Il faut signifier au SGBD que la requête implique un regroupement sur le champ "Date". Pour ce faire, nous cliquons sur l'icône "Totaux". Une nouvelle ligne, baptisée "Opération :", apparaît dans la grille de définition de la requête, entre "Table :" et "Tri :" (figures ci-dessous). La valeur par défaut, pour le champ "Date", est justement "Regroupement" (si cette valeur n'apparaît pas, nous cliquons sur la ligne et nous sélectionnons "Regroupement" dans la liste déroulante). Ainsi, le regroupement sera effectué sur la date.

Quatrième étape. Il faut maintenant introduire le champ sur lequel s'effectue l'opération liée au regroupement. Dans le présent exemple, l'opération consiste à sommer les CA de chaque agence. Nous introduisons donc le champ "CA" dans la grille.

Cinquième étape. Il faut indiquer au SGBD à quelle opération il doit procéder sur le champ "CA". Nous cliquons sur la ligne "Opération :", nous utilisons la liste déroulante pour remplacer "Regroupement" (qui s'est inscrit par défaut) par "Somme".

La requête se présente ainsi comme le montre la figure ci-dessous à gauche.

Chiffre d'affaires journalier (requête)    Chiffre d'affaires par agence (requête)

Quand nous basculons en mode feuille de données, nous obtenons le résultat représenté sur la figure ci-dessous (à gauche). Nous vérifions que le SGBD a bien calculé, pour chaque date, la somme des chiffres d'affaires des trois agences.

Chiffre d'affaires quotidien (table)    Chiffre d'affaires par agence (table)

De la même façon, nous pouvons regrouper le chiffre d'affaires par agence. La requête et son résultat sont représentés dans les deux figures ci-dessus (à droite). Cette fois le SGBD a calculé, pour chaque agence, la somme des chiffres d'affaires quotidiens, pour les deux dates figurant dans la table.

Remarque 1 : l'icône fonctionne comme un commutateur. Si nous cliquons dessus alors que la ligne "Opération :" est présente, celle-ci disparaît, et vice versa.

Remarque 2 : le nom du champ ("SommeDeCA") a été attribué par le SGBD, mais on peut le changer à volonté dans la grille de création de la requête. Pour l'appeler "CA agence", par exemple, il faut remplacer "CA" sur la ligne "Champ :" par "CA agence: CA".

 

4 - Les opérations sur les colonnes

Dans le paragraphe précédent, nous avons créé des requêtes impliquant un regroupement sur une colonne donnée, ce qui nous a permis de calculer le chiffre d'affaires par date (pour chacune des trois agences) ou par agence (pour chacune des deux dates). Mais nous pouvons également avoir besoin du chiffre d'affaire total, pour toutes les agences et toutes les dates de la table. Pour ce faire, nous créons de nouveau une requête de regroupement, mais sans déclarer sur quel champ nous regroupons, comme le montre la figure ci-dessous à gauche. Vous noterez que nous avons utilisé la syntaxe qui nous permet d'imposer le nom du champ (CA_total).

Requête pour le calcul du chiffre d'affaire total    Le chiffre d'affaire total obtenu par regroupement sans précision du champ

Le résultat figure ci-dessus à droite ; vous pourrez vérifier qu'il est bien exact. Bien entendu, vous pouvez utiliser d'autres fonctions que la somme dans ces opérations effectuées verticalement. L'étude de ces fonctions fait l'objet du paragraphe suivant.

Ainsi vous pouvez effectuer des opérations sur les colonnes d'une table, comme vous le feriez dans un tableur. La différence avec un tableur -- outre la syntaxe -- provient du fait que le résultat ne peut pas être enregistré dans la table. Il apparaît systématiquement dans une nouvelle "feuille de données" volatile, à moins que vous ne demandiez que la requête crée une nouvelle table.

 

5 - Les fonctions

La fonction "Somme" (qui ne s'applique qu'aux données numériques et monétaires) n'est pas la seule qui puisse être utilisée lors du regroupement. Dans Access, on trouve également les fonctions suivantes :

La liste des fonctions utilisables lors du regroupement varie d'un SGBD à l'autre. La somme, la moyenne et le comptage sont présents dans tous les SGBD.

Si nous essayons de faire opérer une fonction sur un type de données incompatible, le SGBD Access affiche le message d'erreur suivant : "Type de données incompatible dans l'expression du critère". Et qu'en termes galants ces choses-là sont dites ! Évidemment, il ne s'agit pas d'un critère, mais d'une fonction.

On trouvera ci-dessous des exemples illustrant l'application de ces différentes fonctions, à l'exception de l'écart type et de la variance, qui n'auraient guère de sens vu le petit nombre de données (trois par regroupement) contenues dans la table "Résultats" qui nous sert d'exemple.

Date MoyenneDeCA Agence MoyenneDeCA
06/01/2003 862,26 € Est 621,19 €
07/01/2003 1 156,07 € Nord 1 156,29 €
Sud 1 250,01 €
Date MinDeCA Agence MinDeCA
06/01/2003 561,29 € Est 561,29 €
07/01/2003 681,09 € Nord 927,02 €
Sud 1 098,46 €
Date MaxDeCA Agence MaxDeCA
06/01/2003 1 098,46 € Est 681,09 €
07/01/2003 1 401,56 € Nord 1 385,55 €
Sud 1 401,56 €
Date PremierDeCA Agence PremierDeCA
06/01/2003 927,02 € Est 561,29 €
07/01/2003 1 385,55 € Nord 927,02 €
Sud 1 098,46 €
Date DernierDeCA Agence DernierDeCA
06/01/2003 561,29 € Est 681,09 €
07/01/2003 1 401,56 € Nord 1 385,55 €
Sud 1 401,56 €

 

6 - Le filtrage d'une requête de regroupement

Une requête de regroupement peut être filtrée avant et /ou filtrée après le regroupement. Il faut indiquer au SGBD dans quel cas on entend se trouver.

Le filtrage après regroupement. Ce filtrage ne pose pas de problème particulier, puisque les champs sur lesquels nous pouvons opérer sont présents dans la grille de définition de la requête, et que cette dernière comporte une ligne "Critères :". Nous y inscrivons les critères de filtrage, en respectant les règles de syntaxe propre au SGBD, comme nous avons appris à le faire au chapitre précédent.

Dans la colonne "CA", par exemple, le critère :

>2000

limitera l'affichage aux regroupements conduisant à des chiffres d'affaires supérieurs à 2.000 euros. Dans la colonne "Agence", le critère :

Comme "Nord"

limitera le calcul du chiffre d'affaire cumulé par agence à la seule agence Nord. Dans la colonne "Date", le critère :

<#08/01/2003#

limitera le calcul du chiffre d'affaire cumulé par date aux jours précédant le 8 janvier 2003.

Le filtrage avant regroupement. Pour filtrer une requête avant regroupement, nous procédons ainsi :

Avant de filtrer une requête de regroupement, il faut bien réfléchir au résultat que l'on veut obtenir. Car un même critère, appliqué au même champ, ne donnera pas le même résultat suivant qu'il opère avant ou après le regroupement. Pour le montrer, nous avons créé deux exemples dans lesquels le filtre consiste à ne conserver un CA que s'il est supérieur à 1000 euros, et où le regroupement s'effectue sur l'agence.

Les requêtes et leurs résultats sont représentés sur les figures ci-dessous.

Filtrage après regroupement : requête   Filtrage avant regroupement : requête

Filtrage après regroupement : résultat   Filtrage avant regroupement : résultat

Si le critère porte sur le champ de regroupement, l'application du filtre avant ou après le regroupement donne le même résultat. Faites l'expérience !

 

7 - Conclusion

La requête de regroupement est un outil fort utile. Mais, pour l'utiliser correctement, il faut prendre les précautions suivantes :

Le regroupement avec comptage, et son application au traitement des doublons, sont abordés au chapitre suivant.

     
Pas de page précédente
Chapitre précédent
Retour au sommaire
Plan du tutoriel
Page suivante
Chapitre suivant
Accueil Technique Liens Actualités Formation Emploi Forums Base  
Copyright © CERIG/EFPG 1996-2005
   
 
Mise en page : J.C. Sohm