Agrupación de Datos en SQL: GROUP BY, HAVING y CASE para Análisis Avanzado
Clase 26 de 36 • Curso de Bases de Datos con SQL
Resumen
¿Cómo manejar grandes volúmenes de datos en bases de datos multirrelacionales?
El manejo eficiente de los datos es esencial cuando se trabaja con bases de datos complejas que contienen múltiples relaciones. Este proceso, aunque desafiante, se puede optimizar mediante el uso de herramientas y conceptos avanzados como el GROUP BY
y el HAVING COUNT
. Con estas técnicas, podremos agrupar, filtrar y clasificar los datos con facilidad. Vamos a explorar cómo aplicar estos conceptos y cuál es su efectividad a través de ejemplos prácticos.
¿Qué es el GROUP BY y cómo aplicarlo?
GROUP BY
es fundamental cuando necesitamos contar registros únicos en una base de datos. Supongamos que tienes una tabla de estudiantes, algunos de los cuales están matriculados en varios cursos. Si solamente quieres saber cuántos estudiantes únicos hay sin contar la duplicación de cursos, GROUP BY
te permite consultar la cantidad exacta.
Para lograrlo, ejecuta un conteo sobre el ID del estudiante, agrupando así la información:
SELECT student_id, COUNT(*)
FROM students_courses
GROUP BY student_id;
Esto te mostrará cada estudiante solo una vez junto con la cantidad total de cursos en los que están matriculados.
¿Cómo utilizar el HAVING COUNT para filtrar agrupaciones?
HAVING COUNT
es una herramienta poderosa para aplicar filtros sobre datos agrupados. Por ejemplo, si tu objetivo es obtener los cursos que tengan más de tres estudiantes, podrías implementar la siguiente consulta:
SELECT course_id, COUNT(*)
FROM students_courses
GROUP BY course_id
HAVING COUNT(*) > 3;
Este enfoque te ayuda a aplicar condiciones adicionales a tu agrupación inicial, asegurando que los resultados exhibidos correspondan exactamente a tus condiciones deseadas.
¿Cómo clasificar categorías con CASE WHEN?
El uso del CASE WHEN
es crucial cuando requieres clasificar datos según reglas específicas. Al evaluar un atributo como la edad de diferentes estudiantes y clasificarlos en equipos según su rango, el siguiente código SQL es útil:
SELECT student_name,
CASE
WHEN age BETWEEN 18 AND 20 THEN 'Team A'
ELSE 'Team B'
END as team
FROM students;
Este código te permite clasificar automáticamente a los estudiantes en Team A
si se encuentran dentro del rango de 18 a 20 años y en Team B
si no cumplen esta condición.
¿Cómo expandir los criterios de clasificación?
Para escenarios más complejos, donde los criterios combinan atributos distintos, puedes ampliar el CASE WHEN
:
SELECT student_name,
CASE
WHEN age BETWEEN 18 AND 20 THEN 'Team A'
WHEN student_name = 'María' THEN 'Team A'
ELSE 'Team C'
END as team
FROM students;
Aquí, los estudiantes llamados María también se clasificarán en Team A
, mientras que todos los demás irán al Team C
.
Utilizar entidades como GROUP BY
, HAVING COUNT
, y CASE WHEN
permite manejar grandes datos con mayor precisión. Si te sientes atascado, no olvides que siempre puedes recurrir a herramientas de inteligencia artificial como Platzi Ada para obtener asistencia. ¡Mantén tus habilidades al día y acepta nuevos retos!