EJEMPLO PRÁCTICO DE ANÁLISIS DE DATOS CON MYSQL

Crear las tablas y los datos de ejemplos

-- Crear base de datos
CREATE DATABASE analisis_ventas;
USE analisis_ventas;

-- Tabla de productos
CREATE TABLE productos (
id INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(100),
categoria VARCHAR(50),
precio DECIMAL(10,2)
);

-- Tabla de ventas
CREATE TABLE ventas (
id INT PRIMARY KEY AUTO_INCREMENT,
producto_id INT,
cantidad INT,
fecha DATE,
FOREIGN KEY (producto_id) REFERENCES productos(id)
);

-- Insertar productos
INSERT INTO productos (nombre, categoria, precio) VALUES
('Laptop Pro 15', 'Electrónica', 1200.00),
('Mouse Inalámbrico', 'Electrónica', 25.50),
('Teclado Mecánico', 'Electrónica', 89.90),
('Camiseta Algodón', 'Ropa', 19.99),
('Zapatillas Running', 'Ropa', 79.90),
('Auriculares Bluetooth', 'Electrónica', 59.90),
('Pantalón Jeans', 'Ropa', 45.00);

-- Insertar ventas (datos de ejemplo)
INSERT INTO ventas (producto_id, cantidad, fecha) VALUES
(1, 2, '2025-01-05'),
(2, 5, '2025-01-06'),
(3, 3, '2025-01-07'),
(4, 10, '2025-01-08'),
(5, 4, '2025-01-09'),
(6, 6, '2025-01-10'),
(1, 1, '2025-01-12'),
(7, 8, '2025-01-13'),
(2, 7, '2025-01-15'),
(3, 2, '2025-01-16'),
(5, 3, '2025-01-18'),
(6, 4, '2025-01-20');

Consultas de Análisis de Datos

Total de ingresos generados

SELECT 
SUM(v.cantidad * p.precio) AS ingresos_totales
FROM ventas v
JOIN productos p ON v.producto_id = p.id;

Cantidad total vendida y promedio de unidades por venta

SELECT 
SUM(cantidad) AS total_unidades_vendidas,
ROUND(AVG(cantidad), 2) AS promedio_unidades_por_venta
FROM ventas;

Productos más vendidos (ranking)

SELECT 
p.nombre,
p.categoria,
SUM(v.cantidad) AS unidades_vendidas,
SUM(v.cantidad * p.precio) AS ingresos_generados
FROM ventas v
JOIN productos p ON v.producto_id = p.id
GROUP BY p.id, p.nombre, p.categoria
ORDER BY unidades_vendidas DESC;

Análisis por categoría

SELECT 
p.categoria,
COUNT(DISTINCT p.id) AS cantidad_productos,
SUM(v.cantidad) AS total_unidades,
SUM(v.cantidad * p.precio) AS ingresos_categoria,
ROUND(AVG(p.precio), 2) AS precio_promedio
FROM ventas v
JOIN productos p ON v.producto_id = p.id
GROUP BY p.categoria
ORDER BY ingresos_categoria DESC;

Ventas por mes o por fecha

SELECT 
DATE_FORMAT(fecha, '%Y-%m') AS mes,
SUM(v.cantidad) AS unidades,
SUM(v.cantidad * p.precio) AS ingresos
FROM ventas v
JOIN productos p ON v.producto_id = p.id
GROUP BY DATE_FORMAT(fecha, '%Y-%m')
ORDER BY mes;

Productos que generaron más de 300€ en ingresos

SELECT 
p.nombre,
SUM(v.cantidad * p.precio) AS ingresos
FROM ventas v
JOIN productos p ON v.producto_id = p.id
GROUP BY p.id, p.nombre
HAVING ingresos > 300
ORDER BY ingresos DESC;

Resumen de lo que se puede analizar con MySQL

Con estas consultas se pueden obtener:
  • Ingresos totales y por producto.
  • Ranking de productos más vendidos.
  • Rendimiento por categoría.
  • Tendencias temporales.
  • Productos estrella, los que más ingresos generan.