Büyüme oranı
büyüme = (bu dönem − önceki dönem) / önceki dönem
- MoM (month over month): Bir önceki ayla karşılaştırma. Mevsimsellikten etkilenir.
- YoY (year over year): Geçen yılın aynı ayıyla karşılaştırma. Mevsimselliği nötrler.
WITH aylik AS (
SELECT strftime('%Y-%m', o.order_date) AS ay,
SUM(oi.quantity * oi.unit_price * (1 - oi.discount)) AS ciro
FROM orders o JOIN order_items oi ON oi.order_id = o.order_id
WHERE o.status = 'delivered'
GROUP BY ay
)
SELECT ay, ROUND(ciro) AS ciro,
ROUND(100.0 * (ciro / LAG(ciro, 1) OVER (ORDER BY ay) - 1), 1) AS mom_yuzde,
ROUND(100.0 * (ciro / LAG(ciro, 12) OVER (ORDER BY ay) - 1), 1) AS yoy_yuzde
FROM aylik
ORDER BY ay;
LAG(x, 12) ancak her ay varsa doğrudurEksik ay varsa 12 satır geri gitmek 12 ay geri gitmek demek değildir. Güvenli yol: önce ay iskeleti üret veya geçen yılın ayıyla self join yap.
WITH aylik AS (
SELECT strftime('%Y', order_date) AS yil, strftime('%m', order_date) AS ay, COUNT(*) AS siparis
FROM orders GROUP BY yil, ay
)
SELECT b.ay, a.siparis AS s2023, b.siparis AS s2024,
ROUND(100.0 * (b.siparis - a.siparis) / a.siparis, 1) AS yoy
FROM aylik b JOIN aylik a ON a.ay = b.ay AND a.yil = '2023'
WHERE b.yil = '2024'
ORDER BY b.ay;