Как посчитать CPC в SQL
Содержание:
Зачем CPC
CPC = Cost Per Click, цена за клик. Это базовый вход для расчёта CAC и ROAS. Аукционные рекламные системы (Google, Meta) работают через ставки по CPC, поэтому понимать, как считается и отслеживается CPC, — значит понимать экономику маркетинга.
Формула
CPC = total_ad_spend / total_clicksБазовый расчёт
SELECT
DATE_TRUNC('day', DATE) AS day,
SUM(spend) AS total_spend,
SUM(clicks) AS total_clicks,
SUM(spend)::NUMERIC / NULLIF(SUM(clicks), 0) AS cpc
FROM ad_performance
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
ORDER BY 1;По каналам
SELECT
channel,
campaign_id,
SUM(spend) AS spend,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions,
SUM(spend)::NUMERIC / NULLIF(SUM(clicks), 0) AS cpc,
SUM(clicks)::NUMERIC * 100 / NULLIF(SUM(impressions), 0) AS ctr_pct
FROM ad_performance
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY channel, campaign_id
ORDER BY spend DESC;Blended CPC
«Blended» — это суммарный расход, делённый на суммарное число кликов по всем каналам, включая органику:
WITH paid AS (
SELECT SUM(spend) AS spend, SUM(clicks) AS clicks
FROM ad_performance
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
),
organic AS (
SELECT 0 AS spend, SUM(visits) AS clicks
FROM web_traffic
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
AND source = 'organic'
)
SELECT
(paid.spend + organic.spend) AS total_spend,
(paid.clicks + organic.clicks) AS total_clicks,
(paid.spend + organic.spend)::NUMERIC / NULLIF(paid.clicks + organic.clicks, 0) AS blended_cpc
FROM paid, organic;Blended CPC показывает настоящую стоимость одного посетителя — с учётом «бесплатной» органики.
Динамика
SELECT
DATE_TRUNC('week', DATE) AS week,
SUM(spend)::NUMERIC / NULLIF(SUM(clicks), 0) AS cpc,
SUM(clicks)::NUMERIC * 100 / NULLIF(SUM(impressions), 0) AS ctr_pct
FROM ad_performance
WHERE DATE >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY 1
ORDER BY 1;Рост CPC означает одно из двух: либо конкуренты перебивают ваши ставки, либо падает CTR и цена за клик растёт из-за низкого Quality Score.
Частые ошибки
Ошибка 1. Путать средний CPC со ставкой. Средний CPC — это не то, что вы задаёте в ставке. Вы указываете максимальную ставку, а платите по цене аукциона второй цены, то есть обычно меньше.
Ошибка 2. Определение клика. «Все клики» и «клики по ссылке» — разные метрики, и в Meta они заметно расходятся. Убедитесь, что делите расход на нужный тип кликов.
Ошибка 3. Фрод по кликам. Отфильтровывайте ботовые клики: они раздувают знаменатель и занижают CPC. Иначе цена за клик будет выглядеть ниже, чем есть на самом деле.
Ошибка 4. Налоги и комиссии. Некоторые площадки начисляют НДС поверх расхода на рекламу. Заранее решите, включать его в CPC или нет, и считайте одинаково по всем каналам.
Ошибка 5. Разные валюты. Расход в долларах внутри рублёвой кампании нужно корректно конвертировать по курсу на дату траты, иначе CPC поплывёт.
Связанные темы
- Как посчитать CTR в SQL
- Как посчитать CAC в SQL
- Как посчитать ROAS в SQL
- Как посчитать marketing ROI в SQL
FAQ
Какой CPC нормальный?
Зависит от ниши. В B2B SaaS это обычно $5–50, в электронной коммерции — $0,5–3, а по дорогим техническим запросам CPC доходит до $20 и выше. Сравнивать свой CPC имеет смысл только с бенчмарком своей ниши, а не с рынком вообще.
CPC растёт — что делать?
Во-первых, повышайте CTR: чем выше Quality Score, тем ниже цена за клик. Во-вторых, уточняйте таргетинг, чтобы не платить за нерелевантную аудиторию. В-третьих, тестируйте новые креативы — уставшее объявление почти всегда дорожает.
CPC vs CPM?
CPC — это оплата за клик, а CPM — оплата за тысячу показов. Их связывает соотношение CPM × CTR / 100 = CPC, поэтому одну модель закупки всегда можно пересчитать в другую.
Blended CPC зачем?
Blended CPC учитывает и «стоимость» органики — вложения в контент и SEO, а не только платный трафик. Так виден настоящий уровень эффективности маркетинга, а не только результат рекламной закупки.
Avg CPC vs max bid?
Максимальная ставка — это потолок, который вы готовы заплатить за клик. Фактический CPC обычно ниже, потому что в аукционе второй цены вы платите чуть больше ставки ближайшего конкурента, а не весь свой максимум.