La différence entre les clauses Have et Where dans SQL est que la clause Where ne peut pas être utilisée. pas être utilisé avec des agrégats, mais la clause have peut.
Le où La clause fonctionne sur les données de la ligne, pas sur les données agrégées. Considérons ci-dessous le tableau « Marques ».
Score du cours de l'étudiant
un c1 40
un c2 50
b c3 60
d c1 70
e c2 80
Considérez la requête
SELECT>Student, Score FROM Marks WHERE Score>=40>> |
Cela sélectionnerait les données ligne par ligne.
Le ayant La clause fonctionne sur des données agrégées.
Par exemple, sortie de la requête ci-dessous
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student> |
Total des étudiants
un 90
b 60
j 70
et 80
Lorsque nous appliquons avoir dans la requête ci-dessus, nous obtenons
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>
|
Total des étudiants
un 90
et 80
Remarque : Il ne s'agit pas d'une règle prédéfinie mais dans bon nombre de requêtes SQL, on utilise WHERE avant GROUP BY et HAVING après GROUP BY. La clause Where agit comme un pré-filtre où comme Avoir comme post-filtre.