Зачем нужна
Учитывает сезонность. Нужен для оценки реального роста, а не сезонных всплесков.
Формула
YoY = (Период текущего года - Период прошлого года) / Период прошлого годаКак считать
Берём показатель за месяц/квартал и сравниваем с тем же периодом прошлого года.
SQL-запрос
WITH monthly AS (
SELECT DATE_TRUNC('month', order_timestamp) AS month, SUM(amount) AS revenue
FROM orders
WHERE status = 'paid'
AND order_timestamp >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '24 month')
GROUP BY 1
),
prev_year AS (
SELECT month + INTERVAL '1 year' AS month, revenue AS revenue_prev
FROM monthly
)
SELECT
m.month,
m.revenue,
p.revenue_prev,
ROUND((m.revenue - p.revenue_prev)::decimal / NULLIF(p.revenue_prev, 0), 3) AS yoy
FROM monthly m
LEFT JOIN prev_year p ON p.month = m.month
ORDER BY m.month DESC;