Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous créez des requêtes agrégées, le concepteur de requêtes et de vues effectue certaines hypothèses afin qu’elle puisse construire une requête valide. Par exemple, si vous créez une requête d’agrégation et marquez une colonne de données pour la sortie, le Concepteur de requêtes et de vues fait automatiquement de la colonne une partie de la clause GROUP BY afin de ne pas par inadvertance d’afficher le contenu d’une ligne individuelle dans un résumé.
Utilisation de Group By
Le Concepteur de requêtes et de vues utilise les instructions suivantes pour l’utilisation des colonnes :
Lorsque vous choisissez l’option Group By ou ajoutez une fonction d’agrégation à une requête, toutes les colonnes marquées pour la sortie ou utilisées pour le tri sont automatiquement ajoutées à la clause GROUP BY. Les colonnes ne sont pas automatiquement ajoutées à la clause GROUP BY si elles font déjà partie d’une fonction d’agrégation.
Si vous ne souhaitez pas qu’une colonne particulière fasse partie de la clause GROUP BY, vous devez la modifier manuellement en sélectionnant une autre option dans la colonne Group By du volet Critères. Toutefois, le Concepteur de requêtes et de vues ne vous empêche pas de choisir une option qui peut entraîner une requête qui ne s’exécutera pas.
Si vous ajoutez manuellement une colonne de sortie de requête à une fonction d’agrégation dans le volet Critères ou SQL, le Concepteur de requêtes et de vues ne supprime pas automatiquement d’autres colonnes de sortie de la requête. Par conséquent, vous devez supprimer les colonnes restantes de la sortie de la requête ou les faire partie de la clause GROUP BY ou d’une fonction d’agrégation.
Lorsque vous entrez une condition de recherche dans la colonne Filtrer du volet Critères, le Concepteur de requêtes et de vues suit les règles suivantes :
Si la colonne Group By de la grille n’est pas affichée (car vous n’avez pas encore spécifié de requête d’agrégation), la condition de recherche est placée dans la clause WHERE.
Si vous êtes déjà dans une requête d’agrégation et que vous avez sélectionné l’option Where dans la colonne Group By, la condition de recherche est placée dans la clause WHERE.
Si la colonne Group By contient une valeur autre que Where, la condition de recherche est placée dans la clause HAVING.
Utilisation des clauses HAVING et WHERE
Les principes suivants décrivent comment vous pouvez référencer des colonnes dans une requête d’agrégation dans des conditions de recherche. En général, vous pouvez utiliser une colonne dans une condition de recherche pour filtrer les lignes qui doivent être résumées (clause WHERE) ou pour déterminer les résultats groupés qui apparaissent dans la sortie finale (clause HAVING).
Les colonnes de données individuelles peuvent apparaître dans la clause WHERE ou HAVING, selon la façon dont elles sont utilisées ailleurs dans la requête.
Les clauses WHERE sont utilisées pour sélectionner un sous-ensemble de lignes pour résumer et regrouper et sont donc appliquées avant l’opération d’un regroupement. Par conséquent, vous pouvez utiliser une colonne de données dans une clause WHERE même si elle ne fait pas partie de la clause GROUP BY ou contenue dans une fonction d’agrégation. Par exemple, l’instruction suivante sélectionne tous les titres qui coûtent plus de 10,00 $ et moyenne le prix :
SELECT AVG(price) FROM titles WHERE price > 10Si vous créez une condition de recherche qui implique une colonne également utilisée dans une clause GROUP BY ou une fonction d’agrégation, la condition de recherche peut apparaître sous la forme d’une clause WHERE ou d’une clause HAVING . Vous pouvez décider quel moment vous créez la condition. Par exemple, l’instruction suivante crée un prix moyen pour les titres de chaque éditeur, puis affiche la moyenne pour les éditeurs dans lesquels le prix moyen est supérieur à 10,00 $ :
SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10)Si vous utilisez une fonction d’agrégation dans une condition de recherche, la condition implique un résumé et doit donc faire partie de la clause HAVING.
Voir aussi
Résumer les Résultats des Requêtes (Outils de Base de Données Visuelle)
trier et regrouper les résultats des requêtes (Visual Database Tools)