Conviene haber comprendido Funciones de grupo.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar GROUP BY y HAVING con ROLLUP y GROUPING SETS y resolver un caso nuevo.
Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.
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.
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.
- 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
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.
WHERE filtra filas antes de agrupar.
GROUP BY forma los grupos.
HAVING filtra grupos después del cálculo.
¿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.
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.
ROLLUP(a,b) incluye detalle, subtotal de a y total general.
CUBE puede generar muchas combinaciones.
GROUPING distingue total generado de un NULL real.
¿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.
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.
UNION reúne y deduplica.
INTERSECT conserva coincidencias.
MINUS conserva filas de la primera que no aparecen en la segunda.
¿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.
Tu recorrido en tres ideas
- 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
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Usar HAVING para filtrar filas antes de agrupar.
Elegir UNION cuando deben conservarse repeticiones o UNION ALL cuando no corresponden.
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 +
- WHERE y HAVING cumplen papeles distintos.
- GROUP BY mantiene la granularidad solicitada.
- El total generado se distingue de un NULL real.
