Sobes.tech
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, HAVING y SELECT.

HAVING:

  • Se aplica a grupos de filas.
  • Puede usar funciones de agregación.
  • Se ejecuta después de WHERE y GROUP BY, pero antes de SELECT.

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