81 votes

Fonction d'agrégation dans SQL WHERE-Clause

Dans un test à l'université, il y avait une question ; est-il possible d'utiliser une fonction d'agrégat dans la clause SQL WHERE

J'ai toujours pensé que ce n'était pas possible et je ne trouve pas non plus d'exemple sur la façon dont cela serait possible. Mais ma réponse a été marquée comme fausse et maintenant je veux savoir dans quels cas il est possible d'utiliser une fonction d'agrégat dans le WHERE . De plus, si ce n'est pas possible, ce serait bien d'obtenir un lien vers la spécification où elle est décrite.

116voto

Jason Goemaat Points 7211

HAVING est comme WHERE avec les fonctions d'agrégat, ou vous pouvez utiliser une sous-requête.

 select EmployeeId, sum(amount)
from Sales
group by Employee
having sum(amount) > 20000

Ou

 select EmployeeId, sum(amount)
from Sales
group by Employee
where EmployeeId in (
    select max(EmployeeId) from Employees)

15voto

Jonathan Leffler Points 299946

Vous ne pouvez pas utiliser un agrégat directement dans une clause WHERE ; c'est à ça que servent les clauses HAVING.

Vous pouvez utiliser une sous-requête qui contient un agrégat dans la clause WHERE.

11voto

Chandranshu Points 2857

Requête MISE À JOUR :

 select id from t where id < (select max(id) from t);

Il sélectionnera tout sauf la dernière ligne du tableau t.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X