Junior
¿Cuál es la diferencia entre las construcciones WHERE y HAVING en SQL?
sobes.tech AI
Respuesta de la IA
WHERE filtra las filas antes de agrupar (GROUP BY), influyendo en qué filas participarán en las funciones de agregación. HAVING filtra los grupos después de agrupar, basándose en los resultados de las funciones de agregación.
| Característica | WHERE | HAVING |
|---|---|---|
| Aplicación | A filas individuales | A grupos de filas |
| Momento de procesamiento | Antes de GROUP BY | Después de GROUP BY |
| Uso | Con campos de la tabla, pero sin funciones de agregación | Con resultados de funciones de agregación o campos de GROUP BY |
Ejemplo de uso de WHERE:
SELECT nombre_producto, precio
FROM productos
WHERE category_id = 1; -- Filtra filas **antes** de agrupar (si se hubiera hecho)
Ejemplo de uso de HAVING:
SELECT category_id, COUNT(*) AS total_productos
FROM productos
GROUP BY category_id
HAVING COUNT(*) > 5; -- Filtra grupos **después** de contar el cantidad total de productos
Ejemplo de uso conjunto:
SELECT category_id, AVG(precio) AS precio_promedio
FROM productos
WHERE stock > 0 -- Filtra solo productos en stock **antes** de agrupar
GROUP BY category_id
HAVING AVG(precio) < 100; -- Filtra grupos con precio medio menor a 100 **después** de agrupar y calcular el promedio