Módulo 3 · Organizar y resumir

Consolidación: filtros, grupos y resúmenes

Integra WHERE, agregaciones, GROUP BY, HAVING y ORDER BY.

⏱ 28 minNivel: ConsolidaciónRequisito: Funciones de agregación, GROUP BY y HAVING

0 de 40 lecciones

Al terminar esta lección podrás

  • Construir resúmenes por etapas.
  • Separar condiciones de fila y grupo.
  • Interpretar resultados agregados.

Antes de empezar: Funciones de agregación, GROUP BY y HAVING. Explica en una frase qué recuerdas antes de continuar.

La idea, sin código

Las consultas de resumen se construyen por etapas: filtrar filas válidas, formar grupos, calcular valores, filtrar grupos y ordenar el resultado.

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

Sintaxis mínima

Estructura
FROM → WHERE → GROUP BY → agregaciones → HAVING → ORDER BY

Primer ejemplo guiado

Datos de ejemplo: tabla clientes
idnombreciudademail
1AnaMadridana@ejemplo.es
2LuisValencialuis@ejemplo.es
3MartaMadridNULL
4OmarSevillaomar@ejemplo.es
5NoraBilbaonora@ejemplo.es

Analiza la consulta antes de comprobar el resultado:

SQL
SELECT ciudad, COUNT(*) AS clientes
FROM clientes
WHERE email IS NOT NULL
GROUP BY ciudad
HAVING COUNT(*) >= 1
ORDER BY clientes DESC, ciudad;
Resultado esperado
ciudadclientes
Bilbao1
Madrid1
Sevilla1
Valencia1

Qué ocurre paso a paso

  1. WHERE excluye filas sin email.
  2. GROUP BY resume por ciudad.
  3. HAVING y ORDER BY actúan sobre el resultado agrupado.
Comprueba que lo entendiste

¿Qué se ejecuta conceptualmente antes: WHERE o GROUP BY?

Error frecuente

Consulta o razonamiento problemático

Revisar
SELECT categoria, SUM(stock) FROM productos HAVING stock > 0 GROUP BY categoria;

El filtro por stock individual pertenece a WHERE y GROUP BY debe aparecer antes de HAVING.

Práctica guiada

Básica · apoyo graduado

Resuelve una sola dificultad cada vez

Muestra categorías con al menos dos productos disponibles y su stock total.

Ahora sin guía

Intermedia · práctica autónoma

Transfiere lo aprendido

Resume la facturación no cancelada por cliente_id y ordena de mayor a menor.

Comparar con una solución posible
SQL
SELECT cliente_id, SUM(total) AS facturacion
FROM pedidos
WHERE estado <> 'cancelado'
GROUP BY cliente_id
ORDER BY facturacion DESC;

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

Resumen para llevarte

  • Construye consultas de resumen por etapas.
  • Comprueba la unidad de cada fila final.
  • WHERE y HAVING responden preguntas distintas.

Siguiente paso: Continúa con Relaciones, claves primarias y claves foráneas.

Consulta rápida