Partager via


Comment : regrouper des lignes dans les résultats d'une requête

Mise à jour : novembre 2007

Pour créer des sous-totaux ou afficher d'autres informations de synthèse pour les sous-ensembles d'une table, créez des groupes à l'aide d'une requête d'agrégation. Chaque groupe synthétise les données pour toutes les lignes de la table qui ont la même valeur.

Imaginons, par exemple, que vous souhaitiez voir le prix moyen d'un livre dans la table titles, en détaillant toutefois les résultats par éditeur. Pour ce faire, groupez la requête par éditeur (par exemple, pub_id). La requête donnera, par exemple, le résultat suivant :

Capture d'écran QueryGroupingRowsResultsPane

Lorsque vous groupez des données, vous pouvez uniquement afficher des données groupées ou des données de synthèse, dont notamment les suivantes :

  • 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 générées par des fonctions d'agrégation comme une somme (SUM( )) et une moyenne (AVG( )). Dans l'exemple ci-dessus, la deuxième colonne est obtenue par l'utilisation de la fonction AVG( ) avec la colonne price.

Il est impossible d'afficher des valeurs issues de lignes individuelles. Par exemple, si vous effectuez un regroupement uniquement par éditeur, vous ne pouvez pas afficher en plus les titres individuels dans la requête. Par conséquent, si vous ajoutez des colonnes au résultat 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 en revanche vous souhaitez agréger une colonne, spécifiez une fonction d'agrégation pour cette colonne.

Si vous groupez par plusieurs colonnes, chaque groupe de la requête affiche les valeurs d'agrégation pour toutes les colonnes de regroupement.

Ainsi, la requête suivante exécutée sur la table titles regroupe par éditeur (pub_id) et par type de livre (type). Les résultats de la requête sont classés par éditeur et affichent des informations de synthèse pour chaque type de livre publié par l'éditeur :

SELECT pub_id, type, SUM(price) Total_price
FROM titles
GROUP BY pub_id, type

Le résultat obtenu peut se présenter comme suit :

Capture d'écran QueryGroupingRowsSampleOutput

Remarque :

Les boîtes de dialogue et commandes de menu qui s'affichent peuvent différer de celles décrites dans l'aide selon vos paramètres actifs ou votre édition. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour grouper des lignes

  1. Commencez la requête en ajoutant les tables à synthétiser dans le volet Schéma.

  2. Cliquez avec le bouton droit en un point de l'arrière-plan du volet Schéma, puis choisissez Ajouter un groupe par dans le menu contextuel. Le Concepteur de requêtes et de vues ajoute une colonne Grouper par à la grille dans le volet Critères.

  3. Ajoutez la ou les colonnes à grouper dans le volet Critères. Si la colonne doit apparaître dans le résultat 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 se présenter de la manière suivante :

    SELECT pub_id
    FROM titles
    GROUP BY pub_id
    
  4. Ajoutez la ou les colonnes à agréger dans le volet Critères. Assurez-vous que la colonne est marquée pour la sortie.

  5. Dans la cellule de la grille Grouper par de la colonne à agréger, sélectionnez la fonction d'agrégation appropriée.

    Le Concepteur de requêtes et de vues assigne automatiquement un alias de colonne à la colonne que vous agrégez. Il est possible de remplacer l'alias généré automatiquement par un autre, plus significatif. Pour plus d'informations, consultez Comment : créer des alias de colonnes.

    Capture d'écran QueryGroupingRows

    L'instruction correspondante affichée dans le volet SQL peut se présenter comme suit :

    SELECT   pub_id, SUM(price) AS Totalprice
    FROM     titles
    GROUP BY pub_id
    

Voir aussi

Autres ressources

Tri et regroupement des résultats de la requête