La diferència entre la clàusula have i where a SQL és que la clàusula where cann ot s'utilitzarà amb agregats, però la clàusula havent pot.
El on La clàusula funciona amb les dades de la fila, no amb les dades agregades. Considerem la taula següent 'Marques'.
Puntuació del curs de l'estudiant
a c1 40
a c2 50
b c3 60
d c1 70
e c2 80
Considereu la consulta
SELECT>Student, Score FROM Marks WHERE Score>=40> |
Això seleccionaria les dades fila per fila.
El tenint la clàusula funciona amb dades agregades.
Per exemple, la sortida de la consulta següent
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student> |
Total d'estudiants
un 90
b 60
d 70
i 80
Quan apliquem tenir a la consulta anterior, obtenim
SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>
|
Total d'estudiants
un 90
i 80
Nota: no és una regla predefinida, però en un bon nombre de consultes SQL, utilitzem WHERE abans de GROUP BY i HAVING després de GROUP BY. La clàusula On actua com a prefiltre on com Tenir com a post filtre.