Сезонность CTR по источникам рекламы
SQL, по которому посчитано
WITH monthly AS (
SELECT
date_trunc('month', date) AS month,
source,
sum(clicks) AS clicks,
sum(impressions) AS impressions
FROM ads
WHERE date >= (
SELECT date_trunc('month', max(date)) - INTERVAL '11 months'
FROM ads
)
GROUP BY 1, 2
)
SELECT
month,
round(
sum(CASE WHEN source = 'Яндекс Директ' THEN clicks ELSE 0 END)::DOUBLE
/ nullif(sum(CASE WHEN source = 'Яндекс Директ' THEN impressions ELSE 0 END), 0),
4
) AS ctr_yandex_direct,
round(
sum(CASE WHEN source = 'VK Реклама' THEN clicks ELSE 0 END)::DOUBLE
/ nullif(sum(CASE WHEN source = 'VK Реклама' THEN impressions ELSE 0 END), 0),
4
) AS ctr_vk,
round(
sum(CASE WHEN source = 'Продвижение WB' THEN clicks ELSE 0 END)::DOUBLE
/ nullif(sum(CASE WHEN source = 'Продвижение WB' THEN impressions ELSE 0 END), 0),
4
) AS ctr_wb,
round(
sum(CASE WHEN source = 'Продвижение Ozon' THEN clicks ELSE 0 END)::DOUBLE
/ nullif(sum(CASE WHEN source = 'Продвижение Ozon' THEN impressions ELSE 0 END), 0),
4
) AS ctr_ozon
FROM monthly
GROUP BY month
ORDER BY month