logo

Clausola Aving vs Where in SQL

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>

HAVING>total>70>

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.