logo

Cláusula Tener vs Dónde en SQL

La diferencia entre la cláusula have y donde en SQL es que la cláusula donde no puede Antiguo Testamento usarse con agregados, pero la cláusula have sí.

El dónde La cláusula funciona con los datos de la fila, no con los datos agregados. Consideremos la siguiente tabla 'Marcas'.



Puntuación del curso del estudiante

un c1 40

un c2 50



b c3 60

rec1 70

mi c2 80



Considere la consulta

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

Esto seleccionaría datos fila por fila.

El teniendo La cláusula funciona con datos agregados.

Por ejemplo, resultado de la siguiente consulta

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

Total de estudiantes

un 90

b 60

re 70

y 80

Cuando aplicamos la consulta anterior, obtenemos

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

HAVING>total>70>

Total de estudiantes

un 90

y 80

Nota: No es una regla predefinida, pero en un buen número de consultas SQL usamos WHERE antes de GROUP BY y HAVING después de GROUP BY. La cláusula Where actúa como prefiltro donde como Tener como filtro posterior.