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

  1. Crea un CTE que sume las ventas netas por mes con substr(order_date, 1, 7) AS month.
  2. En la consulta externa usa LAG(net) OVER (ORDER BY month) para obtener las ventas del mes anterior.
  3. Resta para obtener el cambio mes a mes (el primer mes queda en NULL porque no tiene mes anterior).
  4. Ordena por el cambio con ORDER BY ... DESC y LIMIT 1.
  5. 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 $