Repaso
English

¿Cuál es la diferencia entre WHERE y HAVING?

Opciones

  1. No hay diferencia, aparte de sus nombres
  2. WHERE filtra filas antes de agrupar; HAVING filtra los grupos (Opción correcta)
  3. HAVING siempre es más rápido que WHERE en cualquier base de datos
  4. 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 groups

Recuerda

WHERE filtra filas, HAVING filtra grupos.

Términos clave

Practica esta pregunta en Repaso