El análisis de datos es una de las aplicaciones más poderosas de SQL. En este módulo, aprenderás cómo utilizar SQL para extraer, transformar y analizar datos de manera efectiva. Este conocimiento es fundamental para roles como analistas de datos, científicos de datos y desarrolladores de BI (Business Intelligence).

Objetivos del Módulo

  • Comprender cómo utilizar SQL para realizar análisis de datos.
  • Aprender a utilizar funciones agregadas y de ventana para análisis avanzados.
  • Conocer técnicas para limpiar y preparar datos.
  • Realizar análisis exploratorio de datos (EDA) utilizando SQL.

Contenido del Módulo

Funciones agregadas

Las funciones agregadas son esenciales para resumir y analizar grandes conjuntos de datos. Las funciones más comunes incluyen SUM, AVG, COUNT, MIN y MAX.

Ejemplo práctico

-- Supongamos que tenemos una tabla de ventas llamada 'sales' con las siguientes columnas:
-- id, product_id, quantity, price, sale_date

-- Queremos calcular el total de ventas y el promedio de ventas por producto.
SELECT 
    product_id,
    SUM(quantity * price) AS total_sales,
    AVG(quantity * price) AS average_sales
FROM 
    sales
GROUP BY 
    product_id;

Explicación

  • SUM(quantity * price): Calcula el total de ventas por producto.
  • AVG(quantity * price): Calcula el promedio de ventas por producto.
  • GROUP BY product_id: Agrupa los resultados por product_id.

Funciones de ventana

Las funciones de ventana permiten realizar cálculos sobre un conjunto de filas relacionadas sin agrupar los resultados en una sola fila. Esto es útil para cálculos como promedios móviles, sumas acumulativas, etc.

Ejemplo práctico

-- Queremos calcular la suma acumulativa de ventas por producto.
SELECT 
    product_id,
    sale_date,
    quantity * price AS sale_amount,
    SUM(quantity * price) OVER (PARTITION BY product_id ORDER BY sale_date) AS cumulative_sales
FROM 
    sales;

Explicación

  • SUM(quantity * price) OVER (PARTITION BY product_id ORDER BY sale_date): Calcula la suma acumulativa de ventas por producto, ordenada por fecha de venta.

Limpieza y preparación de datos

Antes de realizar cualquier análisis, es crucial limpiar y preparar los datos. Esto puede incluir la eliminación de duplicados, el manejo de valores nulos y la normalización de datos.

Ejemplo práctico

-- Queremos eliminar las filas duplicadas en la tabla 'sales'.
DELETE FROM 
    sales
WHERE 
    id NOT IN (
        SELECT 
            MIN(id)
        FROM 
            sales
        GROUP BY 
            product_id, sale_date, quantity, price
    );

Explicación

  • MIN(id): Selecciona la fila con el ID más bajo para cada grupo de duplicados.
  • DELETE FROM sales WHERE id NOT IN (...): Elimina las filas que no son la primera ocurrencia de cada grupo de duplicados.

Análisis exploratorio de datos (EDA)

El EDA es el proceso de analizar conjuntos de datos para resumir sus características principales, a menudo utilizando métodos visuales. En SQL, esto puede incluir la generación de estadísticas descriptivas y la identificación de patrones.

Ejemplo práctico

-- Queremos obtener estadísticas descriptivas de las ventas.
SELECT 
    product_id,
    COUNT(*) AS num_sales,
    SUM(quantity * price) AS total_sales,
    AVG(quantity * price) AS average_sales,
    MIN(quantity * price) AS min_sale,
    MAX(quantity * price) AS max_sale
FROM 
    sales
GROUP BY 
    product_id;

Explicación

  • COUNT(*): Cuenta el número de ventas por producto.
  • SUM(quantity * price): Calcula el total de ventas por producto.
  • AVG(quantity * price): Calcula el promedio de ventas por producto.
  • MIN(quantity * price): Encuentra la venta mínima por producto.
  • MAX(quantity * price): Encuentra la venta máxima por producto.

Ejercicios prácticos

Ejercicio 1: Análisis de ventas por región

Descripción: Utiliza la tabla sales y una tabla adicional regions que contiene las columnas product_id, region para calcular el total de ventas por región.

Instrucción:

-- Escribe una consulta para calcular el total de ventas por región.
SELECT 
    r.region,
    SUM(s.quantity * s.price) AS total_sales
FROM 
    sales s
JOIN 
    regions r ON s.product_id = r.product_id
GROUP BY 
    r.region;

Ejercicio 2: Identificación de productos más vendidos

Descripción: Encuentra los 5 productos más vendidos en términos de cantidad.

Instrucción:

-- Escribe una consulta para encontrar los 5 productos más vendidos.
SELECT 
    product_id,
    SUM(quantity) AS total_quantity
FROM 
    sales
GROUP BY 
    product_id
ORDER BY 
    total_quantity DESC
LIMIT 5;

Ejercicio 3: Análisis de ventas mensuales

Descripción: Calcula el total de ventas por mes.

Instrucción:

-- Escribe una consulta para calcular el total de ventas por mes.
SELECT 
    DATE_TRUNC('month', sale_date) AS sale_month,
    SUM(quantity * price) AS total_sales
FROM 
    sales
GROUP BY 
    sale_month
ORDER BY 
    sale_month;

Conclusión

En este módulo, hemos explorado cómo utilizar SQL para el análisis de datos, incluyendo el uso de funciones agregadas y de ventana, técnicas de limpieza y preparación de datos, y métodos para realizar análisis exploratorio de datos. Estos conocimientos te permitirán extraer información valiosa de tus datos y tomar decisiones informadas basadas en ellos.

En el próximo módulo, profundizaremos en la creación y gestión de índices para optimizar el rendimiento de tus consultas SQL.

Curso de SQL

Módulo 1: Introducción a SQL

Módulo 2: Consultas básicas de SQL

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2024. Todos los derechos reservados