Módulo 3 · Organizar y resumir

Práctica: combina filtros y resúmenes

Resuelve preguntas con WHERE, funciones de resumen, GROUP BY, HAVING y ORDER BY.

28 minNivel repasoAntes necesitas: Funciones de agregación, GROUP BY y HAVING

0 de 45 lecciones

Al terminar, podrás

  • Definir la unidad de una fila antes de agregar.
  • Separar filtros de filas y filtros de grupos.
  • Comprobar recuentos y sumas con casos pequeños.

Recupera lo aprendido: ¿Dónde pondrías una condición sobre stock individual y otra sobre COUNT(*)?

La idea clave

Una consulta de agregación debe responder tres preguntas: qué filas participan, por qué columna se agrupan y qué cálculo resume cada grupo. WHERE actúa antes del agrupamiento; HAVING, después.

Comprobación rápida: antes de aplicar HAVING, suma los recuentos COUNT(*) de todos los grupos. Debe coincidir con el número de filas que superó WHERE. Si HAVING descarta grupos, esa igualdad ya no tiene por qué cumplirse.

Orden de construcción

Esqueleto
SELECT columna_grupo, FUNCION(valor) AS resumen
FROM tabla
WHERE condicion_de_fila
GROUP BY columna_grupo
HAVING condicion_de_grupo;

Ejemplo paso a paso

Resumiremos todos los pedidos por estado. No existe filtro previo, así que las 18 filas deben repartirse entre los tres grupos.

Pedidos por estado
SELECT estado,
       COUNT(*) AS pedidos,
       ROUND(SUM(total), 2) AS total
FROM pedidos
GROUP BY estado
ORDER BY total DESC;
Resultado esperado
estadopedidostotal
enviado91818,70
cancelado31272,90
pendiente6840,30

Cómo se comprueba

  1. Los recuentos 9 + 3 + 6 suman las 18 filas de pedidos.
  2. SUM(total) resume el importe dentro de cada estado.
  3. ORDER BY total DESC ordena el resultado agregado, no las filas originales.
Comprueba tu comprensión

¿Dónde filtrarías grupos cuya suma sea mayor que 500?

Un error habitual

Filtrar grupos como si fueran filas

Consulta con error
SELECT categoria, SUM(stock) AS stock_total
FROM productos
WHERE stock > 0 AND COUNT(*) >= 2
GROUP BY categoria;

stock > 0 se comprueba producto a producto, pero COUNT(*) >= 2 necesita un grupo ya formado. Deja el filtro individual en WHERE y mueve el recuento a HAVING.

Practica con datos

Laboratorio SQL

Resuelve la consulta

Pendiente

Suma el stock positivo por categoría. Devuelve categoria y la suma con alias stock_total; conserva categorías con al menos dos productos con stock positivo.

Resultado esperado: 2 filas con categoria, stock_total. El orden de las filas no importa.

Ver tablas y datos

Cargando la estructura del ejercicio…

La consulta usa datos ficticios y se ejecuta solo en este navegador.

Ronda autónoma

Importe no cancelado por cliente

Trabaja solo con pedidos. Devuelve cliente_id, el número de pedidos no cancelados como pedidos y su suma como importe_total. Conserva clientes con al menos dos pedidos válidos y ordena por importe descendente, con cliente_id como desempate.

Ver una orientación

Filtra estados antes de agrupar. Cuenta pedidos dentro de cada grupo y filtra ese recuento después. Todavía no necesitas otra tabla ni nombres de clientes.

Ver la solución explicada
SQL
SELECT cliente_id, COUNT(*) AS pedidos,
       ROUND(SUM(total), 2) AS importe_total
FROM pedidos
WHERE estado <> 'cancelado'
GROUP BY cliente_id
HAVING COUNT(*) >= 2
ORDER BY importe_total DESC, cliente_id;

Obtendrás cinco clientes: 5, 1, 8, 2 y 3, en ese orden. El cliente 5 tiene dos pedidos válidos que suman 1112,00. Cada fila representa un cliente con al menos dos pedidos no cancelados.

Comprueba si puedes explicarlo

En la práctica, ¿por qué se usa COUNT(*) >= 2 y no SUM(stock) >= 2?

Ver respuesta razonada

Se piden al menos dos productos con stock, no dos unidades. WHERE stock > 0 decide qué productos participan; COUNT(*) cuenta esos productos y SUM(stock) suma sus unidades.

Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.

Qué debes recordar

  • Define qué representa una fila del resultado.
  • Usa WHERE para filas y HAVING para grupos.
  • Comprueba recuentos, nulos y cardinalidad antes de confiar en el resumen.

A continuación: continúa con relaciones y claves.

Fuentes técnicas consultadas

Estas fuentes oficiales respaldan la sintaxis y los matices señalados en la lección.

Conceptos relacionados