logo

Avoir une clause vs Where dans SQL

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 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>

HAVING>total>70>

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.