¿Cuál es la diferencia entre WHERE y HAVING?
Opciones
- No hay diferencia, aparte de sus nombres
- WHERE filtra filas antes de agrupar; HAVING filtra los grupos (Opción correcta)
- HAVING siempre es más rápido que WHERE en cualquier base de datos
- WHERE solo funciona junto con JOINs en una consulta
Respuesta
WHERE filtra filas antes de agrupar; HAVING filtra grupos después de agregar
Por qué
SQL ejecuta primero WHERE: elimina filas individuales. Luego GROUP BY forma grupos y agrega (COUNT, SUM...). Después HAVING filtra los grupos usando esos resultados agregados.
Ejemplo: departamentos con más de 5 empleados activos.
SELECT dept, COUNT(*)
FROM employees
WHERE active = true -- filter rows
GROUP BY dept
HAVING COUNT(*) > 5; -- filter groupsRecuerda
WHERE filtra filas, HAVING filtra grupos.