logo

Å ha vs hvor-klausul i SQL

Forskjellen mellom ha- og where-leddet i SQL er at where-leddet kan ot brukes med aggregater, men ha-klausulen kan.

De hvor klausul fungerer på rads data, ikke på aggregerte data. La oss se på tabellen nedenfor 'merker'.



Poengsum for studentkurs

en c1 40

en c2 50



b c3 60

d c1 70

e c2 80



Vurder søket

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

Dette vil velge data rad for rad.

De å ha klausulen fungerer på aggregerte data.

For eksempel utdata fra spørringen nedenfor

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

Student totalt

en 90

b 60

d 70

og 80

Når vi søker å ha i forespørselen ovenfor, får vi

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

HAVING>total>70>

Student totalt

en 90

og 80

Merk: Det er ikke en forhåndsdefinert regel, men i en god del av SQL-spørringene bruker vi WHERE før GROUP BY og HAVING etter GROUP BY. Hvor-klausulen fungerer som en forfilter hvor som å ha som en postfilter.