Skillnaden mellan have- och where-satsen i SQL är att where-satsen kan ot användas med aggregat, men ha-satsen kan.
De var klausul fungerar på raddata, inte på aggregerad data. Låt oss överväga nedanstående tabell 'Märken'.
Studentkursresultat
en c1 40
en c2 50
b c3 60
d c1 70
e c2 80
Tänk på frågan
SELECT>Student, Score FROM Marks WHERE Score>=40>> |
Detta skulle välja data rad för rad.
De har klausul fungerar på aggregerade data.
Till exempel utdata från nedanstående fråga
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student> |
Student totalt
en 90
b 60
d 70
och 80
När vi ansöker med ovanstående fråga får vi
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>
|
Student totalt
en 90
och 80
Obs: Det är inte en fördefinierad regel men i ett stort antal av SQL-frågorna använder vi WHERE före GROUP BY och HAVING efter GROUP BY. Where-klausulen fungerar som en Förfilter där som att ha som en postfilter.