SQL Dojo Beta
Indicador

Explicar una variación

Descomponer la variación de una métrica en partes que suman el total: volumen frente a valor, mix frente a tasa, y luego por segmento.

Un producto (ingresos = pedidos × ticket medio) se descompone en ΔN × AOV₀ + N₁ × ΔAOV. Una media sobre grupos se descompone en mix Σ (share₁ − share₀) × rate₀ y tasa Σ share₁ × (rate₁ − rate₀). Después corte la variación por una dimensión tras otra (dispositivo, canal, antigüedad) y deténgase donde esté concentrada, no dispersa. Compare con el mismo periodo del año anterior, no solo con el mes pasado.

WITH months(month, orders, revenue) AS (VALUES ('May', 33607, 6364573.92), ('June', 29889, 5687462.97)),
m AS (
  SELECT MAX(orders) FILTER (WHERE month = 'May') AS n0, MAX(revenue) FILTER (WHERE month = 'May') AS r0,
         MAX(orders) FILTER (WHERE month = 'June') AS n1, MAX(revenue) FILTER (WHERE month = 'June') AS r1
  FROM months
)
SELECT r1 - r0 AS change,
       ROUND((n1 - n0) * (r0 / n0), 2) AS volume_effect,
       ROUND(n1 * (r1 / n1 - r0 / n0), 2) AS value_effect
FROM m;
changevolume_effectvalue_effect
-677110.95-704123.7227012.77
Probarlo en Randori