logo

Clauza Avere vs Unde în SQL

Diferența dintre clauza have și where din SQL este că clauza where cann ot poate fi folosit cu agregate, dar clauza have poate.

The Unde clauza funcționează pe datele rândului, nu pe datele agregate. Să luăm în considerare tabelul de mai jos „Marcă”.



Scorul cursului studentului

a c1 40

a c2 50



b c3 60

d c1 70

e c2 80



Luați în considerare interogarea

SELECT>Student, Score FROM Marks WHERE Score>=40>>

Aceasta ar selecta datele rând cu rând.

The având clauza funcționează pe date agregate.

De exemplu, rezultatul interogării de mai jos

SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>

Total student

un 90

b 60

d 70

și 80

Când aplicăm având în interogarea de mai sus, obținem

SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>

HAVING>total>70>

Total student

un 90

și 80

Notă: Nu este o regulă predefinită, dar într-un număr bun de interogări SQL, folosim WHERE înainte de GROUP BY și HAVING după GROUP BY. Clauza Where acționează ca a prefiltru unde ca Având ca a post filtru.