Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

SQL para ciencia de datos, Unidad 3 — Agregaciones y estadística básica, 3.3 — HAVING y filtros sobre agregados ·

Casos reales de análisis

Casos reales de análisis: HAVING y filtros sobre agregados

Introducción

Cuando trabajamos con grandes conjuntos de datos, una de las herramientas más poderosas que tenemos a nuestro alcance es la combinación de GROUP BY y HAVING. Estas cláusulas nos permiten realizar análisis avanzados y filtrar agrupamientos en función de ciertos criterios. Sin embargo, su uso no siempre es intuitivo y puede llevar a resultados inesperados si no se comprende completamente.

Explicación principal con ejemplos

La cláusula HAVING nos permite aplicar un filtro a los grupos resultantes después de una operación de agrupamiento. Esto es útil cuando queremos filtrar directamente sobre el resultado de una consulta que ya ha aplicado GROUP BY.

Ejemplo 1: Filtrando empresas por ingresos totales

Supongamos que tenemos una tabla llamada sales con las siguientes columnas:

  • customer_id: Identificador del cliente.
  • product_id: Identificador del producto.
  • sale_date: Fecha de la venta.
  • amount: Monto de la venta.

Queremos encontrar todas las empresas cuyos ingresos totales superen cierto monto. Podemos hacerlo utilizando GROUP BY y HAVING.

SELECT customer_id, SUM(amount) AS total_sales
FROM sales
WHERE product_id = 'A123'
GROUP BY customer_id
HAVING SUM(amount) > 5000;

En este ejemplo, filtramos por el producto A123 y luego agrupamos por customer_id. Finalmente, aplicamos un filtro sobre los grupos resultantes para obtener solo aquellos con ingresos superiores a $5,000.

Ejemplo 2: Filtrando departamentos con empleados en ciertas edades

Consideremos una tabla llamada employees con las siguientes columnas:

  • employee_id: Identificador del empleado.
  • department_id: Identificador del departamento.
  • age: Edad del empleado.

Si queremos encontrar todos los departamentos con más de 5 empleados menores de 30 años, podríamos hacer lo siguiente:

SELECT department_id
FROM employees
WHERE age < 30
GROUP BY department_id
HAVING COUNT(*) > 5;

Esta consulta filtra primero a los empleados menores de 30 años y luego agrupa por department_id, aplicando un filtro sobre el número de empleados en cada departamento.

Errores típicos / trampas

A pesar de su poder, las cláusulas GROUP BY y HAVING pueden llevar a errores si no se usan con cuidado. Aquí te presentamos algunas trampas comunes:

  1. Confundir WHERE y HAVING: A menudo, los desarrolladores confunden el uso de WHERE para filtrar antes del agrupamiento, en lugar de usarlo para aplicar filtros después del agrupamiento con HAVING.
    -- Error: Filtra antes del agrupamiento
    SELECT department_id, COUNT(*) as num_employees
    FROM employees
    WHERE age < 30
    GROUP BY department_id;
  1. Faltar a considerar la cardinalidad de los grupos: Si los grupos resultantes son muy grandes o pequeños, el rendimiento puede verse afectado.
    -- Error: Filtra sobre una columna que no es agregada
    SELECT customer_id, SUM(amount) as total_sales
    FROM sales
    WHERE product_id = 'A123'
    GROUP BY customer_id
    HAVING SUM(amount) > 5000 AND COUNT(*) > 10;
  1. Usar HAVING en lugar de WHERE: En algunas consultas, puede parecer lógico usar HAVING cuando realmente deberíamos usar WHERE.
    -- Error: Usa HAVING donde debería ser WHERE
    SELECT customer_id, SUM(amount) as total_sales
    FROM sales
    GROUP BY customer_id
    HAVING SUM(amount) > 5000 AND customer_id = 'C123';

Checklist accionable

Para asegurarte de usar correctamente GROUP BY y HAVING, sigue estos pasos:

  1. Revisa tus necesidades analíticas: Antes de escribir la consulta, piensa en qué quieres lograr con tus datos.
  1. Define claramente tus filtros: Identifica cuáles son los criterios que deseas aplicar antes y después del agrupamiento.
  1. Comprueba tu rendimiento: Ejecuta la consulta en un entorno de prueba para asegurarte de que el rendimiento es adecuado.
  1. Revisa las relaciones entre tus columnas: Asegúrate de entender cómo se relacionan las columnas antes y después del agrupamiento.
  1. Verifica los resultados: Asegúrate de que los resultados son lo esperados y ajusta la consulta si es necesario.

Cierre

Siguientes pasos

  • Aprende a combinar GROUP BY con otras funciones agregadas para obtener una visión más completa de tus datos.
  • Practica consultas avanzadas utilizando HAVING en diferentes contextos para mejorar tu habilidad analítica.
  • Conoce mejor las herramientas que te rodean, como índices y optimizadores de consulta, para mejorar el rendimiento de tus consultas.

Al dominar la combinación de GROUP BY con HAVING, podrás realizar análisis más precisos y detallados en tus proyectos de ciencia de datos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).