De SQL a Dashboard: Transformando Datos en Decisiones

Este análisis utiliza solamente SQL para la extracción de la información y generación de consultas y Power BI para la construcción de un dashboard interactivo que muestra los insights clave. Incluye consultas y graficos a partir de los datos creados.

Dashboard de ventas creado con SQL Dashboard de ventas creado con SQL Dashboard de ventas creado con SQL Dashboard de ventas creado con SQL Dashboard de ventas creado con SQL

Metricas Importantes

Construcción de Cero

Creación de la BD, Llenado, Extracción de Información y Visualización

SQL

Lenguaje utilizado

Power BI

Programa de visualización

Consultas Complejas

Mas de 6 consultas realziadas con diferente nivel de complejidad

DataSet

Creado y llenado con datos ficcticios por medio de SQL

Código en SQL


-- Creación de Tablas
use tienda;
CREATE TABLE productos (
    id_producto SERIAL PRIMARY KEY,
    nombre VARCHAR(100),
    categoria VARCHAR(50),
    precio DECIMAL(10,2),
    stock INT
);
CREATE TABLE categorias (
    id_categoria SERIAL PRIMARY KEY,
    nombre VARCHAR(50),
    descripcion TEXT
);
CREATE TABLE proveedores (
    id_proveedor SERIAL PRIMARY KEY,
    nombre VARCHAR(100),
    contacto VARCHAR(100),
    telefono VARCHAR(20),
    ciudad VARCHAR(50)
);
CREATE TABLE empleados (
    id_empleado SERIAL PRIMARY KEY,
    nombre VARCHAR(100),
    cargo VARCHAR(50),
    correo VARCHAR(100),
    fecha_ingreso DATE
);
CREATE TABLE ventas (
    id_venta SERIAL PRIMARY KEY,
    id_cliente INT REFERENCES clientes(id_cliente),
    id_empleado INT REFERENCES empleados(id_empleado),
    fecha DATE,
    total DECIMAL(10,2)
);
CREATE TABLE detalle_venta (
    id_detalle SERIAL PRIMARY KEY,
    id_venta INT REFERENCES ventas(id_venta),
    id_producto INT REFERENCES productos(id_producto),
    cantidad INT,
    precio_unitario DECIMAL(10,2)
);
CREATE TABLE devoluciones (
    id_devolucion SERIAL PRIMARY KEY,
    id_venta INT REFERENCES ventas(id_venta),
    fecha DATE,
    motivo TEXT
);
CREATE TABLE pagos (
    id_pago SERIAL PRIMARY KEY,
    id_cliente INT REFERENCES clientes(id_cliente),
    fecha DATE,
    monto DECIMAL(10,2),
    metodo_pago VARCHAR(50)
);
-- Consultas 
-- Total Ventas por año y mes
SELECT 
EXTRACT(YEAR FROM fecha) AS año, EXTRACT(MONTH FROM fecha) AS mes, SUM(total) AS Total_Ventas
FROM ventas
GROUP BY año,mes
ORDER BY año,mes;

-- Top 10 prodcutos mas Vendidos
SELECT p.nombre, SUM(dv.cantidad) AS Cantidad_Vendida FROM productos p
JOIN detalle_venta dv ON dv.id_producto = p.id_producto
GROUP BY p.id_producto, p.nombre
ORDER BY SUM(dv.cantidad) Desc
LIMIT 10;

-- Categorias con mayor ingreso
SELECT p.categoria, SUM(dv.cantidad * dv.precio_unitario) AS Ingreso_Total, COUNT(p.categoria) FROM productos p
JOIN detalle_venta dv ON dv.id_producto = p.id_producto
GROUP BY p.categoria
ORDER BY ingreso_total Desc;

-- Clientes con mas ventas 
SELECT cl.nombre As "Nombre Cliente" , SUM(v.total) As ventas_Totales, COUNT(v.id_cliente) As Cantidad_ventas 
FROM clientes cl
JOIN ventas v ON v.id_cliente = cl.id_cliente
GROUP BY cl.id_cliente
ORDER BY   Cantidad_ventas Desc
LIMIT 10;

-- Total mensual de ingresos (Ventas - Devoluciones)
SELECT 
    EXTRACT(YEAR FROM v.fecha) AS año,
    EXTRACT(MONTH FROM v.fecha) AS mes,
    SUM(v.total) - COALESCE(SUM(dv.total), 0) AS ingresos_netos
FROM ventas v
LEFT JOIN devoluciones d ON v.id_venta = d.id_venta
LEFT JOIN ventas dv ON d.id_venta = dv.id_venta
GROUP BY año, mes
ORDER BY año, mes;

-- Empleados con mas ventas
SELECT e.nombre, SUM(v.total) FROM empleados e
JOIN ventas v ON v.id_empleado = e.id_empleado
GROUP BY v.id_empleado
ORDER BY v.total Desc;

-- Ventas por mes y por empleado
SELECT EXTRACT(YEAR FROM v.fecha) As Año, EXTRACT(MONTH FROM v.fecha) As Mes, e.nombre, SUM(v.total) 
FROM empleados e
JOIN ventas v ON e.id_empleado = v.id_empleado
GROUP BY Año, Mes, e.id_empleado, e.nombre
ORDER BY Año, Mes, v.total Desc;

                    

Aquí podrás encontrar el código completo utilizado para construir cada una de las gráficas del análisis. Se incluyen las etapas de creación de tablas y generación de consultas en SQL.

Metodología

Se diseñó y construyó una base de datos relacional en MySQL Workbench, alimentada con datos ficticios para simular escenarios reales. A través de consultas SQL, se extrajeron indicadores clave de desempeño (KPIs) como parte del análisis exploratorio.

✅ Modelado y normalización de la base de datos.
✅ Inserción de datos ficticios relevantes.
✅ Consultas SQL para obtención de métricas estratégicas.

Finalmente, los resultados fueron integrados a Power BI para su visualización, permitiendo una interpretación dinámica e interactiva del comportamiento de los datos.

Descargar Proyecto

Incluye Código SQL Completo.

Logo de WhatsApp