Construir un reporte de ventas por país es exactamente lo que hace un analista de datos en su día a día. Aquí se integran todas las herramientas de SQL aprendidas —DDL, DML, SELECT, JOIN, GROUP BY, HAVING, ORDER BY y funciones de formato— en un solo ejercicio práctico que demuestra cómo transformar datos crudos en información útil para la toma de decisiones.
¿Cómo explorar los datos disponibles antes de construir el reporte?
Antes de lanzar cualquier consulta compleja, conviene saber con qué volumen de información se cuenta. Utilizando SELECT COUNT(*) sobre cada tabla se obtiene un panorama rápido [0:52]:
- Pedidos: 200 registros.
- Clientes: 100 registros.
- Productos: 39 registros.
- Detalle pedidos: 597 registros.
Esta exploración inicial confirma que hay información suficiente para generar reportes significativos. El COUNT(*) cuenta todas las filas de una tabla sin importar si hay valores nulos, lo que lo convierte en la forma más directa de medir el tamaño de cada entidad.
¿Qué muestra el reporte principal de ventas por país?
El reporte combina múltiples tablas mediante INNER JOIN, que devuelve únicamente los registros que tienen coincidencia en ambas tablas involucradas [1:30]. Se enlazan pedidos con sucursales, países y detalle de pedidos para obtener por cada país:
- Nombre del país.
- Total de pedidos realizados.
- Clientes únicos que compraron.
- Monto total de ventas, calculado como
SUM(cantidad * precio_unitario).
- Ticket promedio, usando la función de agregación
AVG(cantidad * precio_unitario).
El resultado ya entrega valor analítico: Argentina, por ejemplo, muestra sus pedidos, clientes únicos, monto total y ticket promedio. Sin embargo, los números sin formato resultan difíciles de leer.
¿Cómo aplicar formato de moneda con TO_CHAR?
Para que el monto total y el ticket promedio sean legibles, se aplica la función TO_CHAR [2:45]. Esta función transforma valores numéricos en cadenas con formato específico, eliminando decimales innecesarios y presentando los datos como moneda. El resultado es un reporte mucho más presentable para quien lo visualice.
¿Se puede ampliar el reporte con más dimensiones?
Absolutamente. Se pueden agregar dimensiones como tiempo, sucursales o categoría de cliente para segmentar la información con mayor detalle.
¿Qué variantes prácticas se pueden construir sobre este reporte?
A partir del reporte base, se generan varias consultas que responden preguntas de negocio distintas.
Ventas por periodo de tiempo
Usando TO_CHAR sobre la fecha del pedido para extraer año y mes, se genera un campo de periodo [3:30]. Combinado con ORDER BY descendente y LIMIT 12, se obtienen los doce meses con mayor actividad comercial. Esto permite identificar estacionalidad y tendencias temporales en Tienda Latam.
Top diez productos más vendidos
Mediante INNER JOIN entre detalle de pedidos, productos y categorías, se listan los diez productos con mayor volumen de ventas [4:30]. Este tipo de consulta es fundamental para decisiones de inventario y estrategia comercial.
Categorías filtradas con HAVING
El HAVING actúa como un filtro que se aplica después de la agrupación, a diferencia del WHERE que filtra antes [5:08]. En este caso, se usa para mostrar solo las categorías de productos cuyas ventas superen diez mil unidades monetarias. El resultado revela que electrónica, deportes y outdoor, y ropa y calzado son las categorías que superan ese umbral.
Resumen con UNION ALL
UNION ALL permite unir los resultados de varias consultas independientes en una sola salida [5:55]. Cada consulta genera una fila con un indicador distinto:
- Países activos: 12.
- Sucursales: 20.
- Empleados: 40.
- Clientes activos: 100.
- Productos: 39.
- Pedidos totales: 200.
- Líneas de detalle: 597.
Esto funciona como un dashboard resumido de los principales indicadores de Tienda Latam.
¿Cómo visualizar estos datos más allá de SQL?
Para gráficos simples, pgAdmin ofrece una herramienta básica. Cuando la complejidad aumenta, lo recomendable es conectar la base de datos PostgreSQL directamente a herramientas como Excel o Power BI [6:30]. Power BI, por ejemplo, permite crear visualizaciones interactivas que se alimentan de las mismas consultas construidas en SQL, transformando las tablas en gráficos dinámicos.
El desafío propuesto es claro: filtrar con HAVING solo países con más de diez mil en ventas totales, formatear con TO_CHAR incluyendo signo de pesos, y crear una variante agrupada por categoría de producto. Comparte ambas consultas en los comentarios, porque este es tu primer portafolio de SQL.