Как посчитать CPC в SQL

Проверь себя · 1/3разбор после ответа
В таблице платежей для каждой транзакции нужен накопительный итог сумм пользователя на этот момент. Какое выражение даёт корректный результат?

Зачем 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;
Закрепи формулу cpc в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать cpc в Telegram

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 поплывёт.

Связанные темы

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 обычно ниже, потому что в аукционе второй цены вы платите чуть больше ставки ближайшего конкурента, а не весь свой максимум.