SQL · Sección 9

Agrupación y conjuntos

GROUP BY, HAVING, subtotales y operadores para combinar resultados.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Funciones de grupo.

02 / META OBSERVABLE

Al terminar deberías poder relacionar GROUP BY y HAVING con ROLLUP y GROUPING SETS y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

Las primeras secciones se leen sin instalar nada. Para practicar SQL prepara PostgreSQL o un DBMS equivalente.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan GROUP BY y HAVING y ROLLUP y GROUPING SETS?

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Crearás resúmenes por categoría, filtrarás grupos y combinarás resultados compatibles sin confundir filas con agregados.

Al terminar podrás
  • GROUP BY define el nivel del resumen
  • ROLLUP, CUBE y GROUPING SETS agregan niveles de análisis
  • UNION, UNION ALL, INTERSECT y MINUS combinan consultas
01
Agrupación

GROUP BY define el nivel del resumen

Cada combinación distinta de las columnas agrupadas produce una fila. Toda columna no agregada de SELECT debe pertenecer al GROUP BY.

01

WHERE filtra filas antes de agrupar.

02

GROUP BY forma los grupos.

03

HAVING filtra grupos después del cálculo.

Comprueba lo aprendido · 01

¿Por qué SUM(total) > 1000000 pertenece a HAVING y no a WHERE?

Mostrar respuesta

Porque SUM(total) existe después de formar cada grupo; WHERE actúa antes de ese cálculo.

02
Subtotales

ROLLUP, CUBE y GROUPING SETS agregan niveles de análisis

ROLLUP crea subtotales jerárquicos; CUBE combina todos los niveles; GROUPING SETS permite escoger exactamente cuáles calcular.

01

ROLLUP(a,b) incluye detalle, subtotal de a y total general.

02

CUBE puede generar muchas combinaciones.

03

GROUPING distingue total generado de un NULL real.

Comprueba lo aprendido · 02

¿Qué usarías si solo necesitas totales por región y por categoría, sin sus combinaciones?

Mostrar respuesta

GROUPING SETS ((región), (categoría)) permite pedir exactamente esos dos niveles.

03
Conjuntos

UNION, UNION ALL, INTERSECT y MINUS combinan consultas

Cada SELECT debe devolver la misma cantidad de columnas con tipos compatibles. UNION elimina duplicados; UNION ALL los conserva.

01

UNION reúne y deduplica.

02

INTERSECT conserva coincidencias.

03

MINUS conserva filas de la primera que no aparecen en la segunda.

Comprueba lo aprendido · 03

¿Qué operador usarías para encontrar personas inscritas en ambos talleres?

Mostrar respuesta

INTERSECT, siempre que ambos SELECT proyecten columnas compatibles que identifiquen a la persona.

Resumen de la sección

Tu recorrido en tres ideas

  1. GROUP BY define el nivel del resumen
  2. ROLLUP, CUBE y GROUPING SETS agregan niveles de análisis
  3. UNION, UNION ALL, INTERSECT y MINUS combinan consultas
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Usar HAVING para filtrar filas antes de agrupar.

ERROR 02

Elegir UNION cuando deben conservarse repeticiones o UNION ALL cuando no corresponden.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Resume ventas por región, conserva solo regiones sobre una meta y añade un total general.

Mostrar pauta de corrección
Una respuesta sólida:
  • WHERE y HAVING cumplen papeles distintos.
  • GROUP BY mantiene la granularidad solicitada.
  • El total generado se distingue de un NULL real.