Misión M25 · SQL · 25 min
Cambio mes a mes con LAG()
Pedido de tu gerente
El director de finanzas pregunta: "¿Qué mes tuvo el mayor salto en ventas netas comparado con el mes anterior, y de cuánto fue?"
Datos
Descarga el/los archivo(s) de práctica:
Pasos
- Crea un CTE que sume las ventas netas por mes con substr(order_date, 1, 7) AS month.
- En la consulta externa usa LAG(net) OVER (ORDER BY month) para obtener las ventas del mes anterior.
- Resta para obtener el cambio mes a mes (el primer mes queda en NULL porque no tiene mes anterior).
- Ordena por el cambio con ORDER BY ... DESC y LIMIT 1.
- Opcional: calcula también el cambio % con 100.0 * (net - prev) / prev.
Revisa tu respuesta
¿Cuál fue el mayor aumento mes a mes en ventas netas (2024–2025), en dólares?
Ver solución
Marzo de 2025 subió $2,515.99 frente a febrero de 2025: el mayor aumento de los dos años (marzo de 2024 es segundo con +$1,600.34).
WITH monthly AS (
SELECT substr(o.order_date, 1, 7) AS month,
SUM(oi.quantity * oi.unit_price * (1 - oi.discount)) AS net
FROM orders o
JOIN order_items oi ON oi.order_id = o.order_id
GROUP BY month
),
changes AS (
SELECT month, net,
net - LAG(net) OVER (ORDER BY month) AS mom_change
FROM monthly
)
SELECT month, ROUND(mom_change, 2) AS mom_change
FROM changes
WHERE mom_change IS NOT NULL
ORDER BY mom_change DESC
LIMIT 1;Respuesta: 2515.99 $