Regrouper des lignes dans les résultats de requête (Visual Database Tools)
Si vous souhaitez créer des sous-totaux ou afficher d’autres informations récapitulatives pour les sous-ensembles d’une table, vous créez des groupes à l’aide d’une requête d’agrégation. Chaque groupe récapitule les données de toutes les lignes de la table qui ont la même valeur.
Par exemple, vous souhaiterez peut-être voir le prix moyen d’un livre dans la table titles
, mais décomposez les résultats par éditeur. Pour ce faire, vous regroupez la requête par éditeur (par exemple, pub_id
). La sortie de requête résultante peut ressembler à ceci :
résultats de la requête
Lorsque vous regroupez des données, vous pouvez afficher uniquement des données récapitulatives ou groupées, telles que :
Valeurs des colonnes groupées (celles qui apparaissent dans la clause GROUP BY). Dans l’exemple ci-dessus,
pub_id
est la colonne groupée.Valeurs produites par des fonctions d’agrégation telles que SUM( ) et AVG( ). Dans l’exemple ci-dessus, la deuxième colonne est produite à l’aide de la fonction AVG( ) avec la colonne
price
.
Vous ne pouvez pas afficher de valeurs à partir de lignes individuelles. Par exemple, si vous regroupez uniquement par éditeur, vous ne pouvez pas également afficher des titres individuels dans la requête. Par conséquent, si vous ajoutez des colonnes à la sortie de la requête, le concepteur de requêtes et de vues les ajoute automatiquement à la clause GROUP BY de l’instruction dans le volet SQL. Si vous souhaitez qu’une colonne soit agrégée à la place, vous pouvez spécifier une fonction d’agrégation pour cette colonne.
Si vous regroupez plusieurs colonnes, chaque groupe de la requête affiche les valeurs d’agrégation pour toutes les colonnes de regroupement.
Par exemple, la requête suivante sur les groupes de tables titles
par éditeur (pub_id
) et également par type de livre (type
). Les résultats de la requête sont classés par éditeur et affichent des informations récapitulatives pour chaque type de livre produit par l’éditeur :
SELECT pub_id, type, SUM(price) Total_price
FROM titles
GROUP BY pub_id, type
La sortie résultante peut ressembler à ceci :
Pour regrouper des lignes
Démarrez la requête en ajoutant les tables que vous souhaitez synthétiser dans le volet Diagramme.
Cliquez avec le bouton droit sur l’arrière-plan du volet Diagramme, puis choisissez Ajouter un groupe par dans le menu contextuel. Le Concepteur de requêtes et de vues ajoute une colonne Group By à la grille dans le volet Critères.
Ajoutez la colonne ou les colonnes que vous souhaitez regrouper dans le volet Critères. Si vous souhaitez que la colonne apparaisse dans la sortie de la requête, assurez-vous que la colonne Sortie est sélectionnée pour la sortie.
Le Concepteur de requêtes et de vues ajoute une clause GROUP BY à l’instruction dans le volet SQL. Par exemple, l’instruction SQL peut ressembler à ceci :
SELECT pub_id FROM titles GROUP BY pub_id
Ajoutez la colonne ou les colonnes que vous souhaitez agréger au volet Critères. Assurez-vous que la colonne est marquée pour la sortie.
Dans la cellule de grille pour la colonne qui va être agrégée (Group By), sélectionnez la fonction d’agrégation appropriée.
Le Concepteur de requêtes et de vues affecte automatiquement un alias de colonne à la colonne que vous résumez. Vous pouvez remplacer cet alias généré automatiquement par un alias plus significatif. Pour plus d’informations, consultez Créer des alias de colonne.
L’instruction correspondante dans le volet SQL peut ressembler à ceci :
SELECT pub_id, SUM(price) AS Totalprice FROM titles GROUP BY pub_id