Junior
¿Cuál es la diferencia entre las sentencias WHERE y HAVING en SQL?
sobes.tech AI
Respuesta de la IA
WHERE filtra las filas antes de agrupar. HAVING filtra los grupos creados con GROUP BY, después de agrupar.
WHERE:
- Se aplica a filas individuales.
- No puede usar funciones de agregación (
COUNT,SUM,AVG,MIN,MAX). - Se ejecuta antes de
GROUP BY,HAVINGySELECT.
HAVING:
- Se aplica a grupos de filas.
- Puede usar funciones de agregación.
- Se ejecuta después de
WHEREyGROUP BY, pero antes deSELECT.
Ejemplo:
Encontrar clientes de la ciudad 'Moscú' (donde WHERE) que tengan un monto total de pedidos superior a 1000 (donde HAVING).
SELECT customer_id, SUM(order_amount) -- Selecciona ID del cliente y suma de sus pedidos
FROM orders -- De la tabla de pedidos
WHERE city = 'Moscú' -- Filtra filas antes de agrupar, solo pedidos de Moscú
GROUP BY customer_id -- Agrupa filas por ID del cliente
HAVING SUM(order_amount) > 1000; -- Filtra grupos, solo aquellos con suma de pedidos > 1000