La differenza tra la clausola have e where in SQL è che la clausola where può ot essere utilizzato con aggregati, ma la clausola di avere può.
IL Dove La clausola funziona sui dati della riga, non sui dati aggregati. Consideriamo la tabella 'Marchi' di seguito.
Punteggio del corso dello studente
a c1 40
ac2 50
bc3 60
d c1 70
ec2 80
Considera la domanda
SELECT>Student, Score FROM Marks WHERE Score>=40>> |
Ciò selezionerebbe i dati riga per riga.
IL avendo La clausola funziona su dati aggregati.
Ad esempio, l'output della query seguente
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student> |
Totale studenti
un 90
B60
d70
e 80
Quando applichiamo la query precedente, otteniamo
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>
|
Totale studenti
un 90
e 80
Nota: non è una regola predefinita ma in un buon numero di query SQL utilizziamo WHERE prima di GRUPPO BY e HAVING dopo GRUPPO BY. La clausola Where funge da a pre filtro dove come Avere come a post-filtro.