Módulo 3 · Organizar y resumir

Filtrar grupos con HAVING

Conserva únicamente los grupos cuyo resumen cumple una condición.

⏱ 18 minNivel: InicialRequisito: GROUP BY

0 de 40 lecciones

Al terminar esta lección podrás

  • Distinguir WHERE y HAVING.
  • Filtrar resultados agregados.
  • Justificar el momento de cada filtro.

Antes de empezar: GROUP BY. Explica en una frase qué recuerdas antes de continuar.

La idea, sin código

WHERE filtra filas antes de agrupar. HAVING filtra grupos después de calcular agregaciones. Elegir uno u otro depende de si la condición habla de una fila o de un resumen.

Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?

Sintaxis mínima

Estructura
GROUP BY columna
HAVING función_agregada condición

Primer ejemplo guiado

Datos de ejemplo: tabla productos
idnombrecategoriapreciostock
1TecladoAccesorios3512
2MonitorPantallas1895
3RatónAccesorios220
4PortátilEquipos8993
5WebcamAccesorios598

Analiza la consulta antes de comprobar el resultado:

SQL
SELECT categoria, COUNT(*) AS productos
FROM productos
GROUP BY categoria
HAVING COUNT(*) >= 2;
Resultado esperado
categoriaproductos
Accesorios3

Qué ocurre paso a paso

  1. GROUP BY crea los grupos.
  2. COUNT(*) calcula su tamaño.
  3. HAVING conserva Accesorios porque tiene al menos dos productos.
Comprueba que lo entendiste

¿Dónde filtras grupos con SUM(total) > 100?

Error frecuente

Consulta o razonamiento problemático

Revisar
WHERE COUNT(*) > 1 GROUP BY categoria

COUNT(*) todavía no existe cuando WHERE filtra las filas.

Práctica guiada

Básica · apoyo graduado

Resuelve una sola dificultad cada vez

Muestra departamentos cuyo salario medio supere 30000.

Ahora sin guía

Intermedia · práctica autónoma

Transfiere lo aprendido

Cuenta pedidos por cliente e incluye solo clientes con dos o más pedidos.

Comparar con una solución posible
SQL
SELECT cliente_id, COUNT(*) AS pedidos
FROM pedidos
GROUP BY cliente_id
HAVING COUNT(*) >= 2;

Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.

Resumen para llevarte

  • WHERE filtra filas; HAVING filtra grupos.
  • La condición agregada pertenece a HAVING.
  • Explica qué representa una fila antes de elegir la cláusula.

Siguiente paso: Continúa con Consolidación: filtros, grupos y resúmenes.

Consulta rápida