SQL для маркетологов: 10 запросов для анализа и роста продаж
Введение
Современный маркетинг требует работы с большими объемами данных. SQL — мощный инструмент, который позволяет самостоятельно извлекать нужную информацию из CRM, систем аналитики и баз данных. В этой статье — 10 готовых запросов для решения типовых задач: от сегментации аудитории до оценки эффективности рекламы.
10 SQL-запросов для маркетолога
1. Общая выручка по периодам
SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS revenue FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31' GROUP BY month ORDER BY month;
Для чего: мониторинг динамики продаж, выявление сезонности.
2. Топ-10 товаров по прибыли
SELECT product_name, SUM(quantity * price - cost) AS profit FROM sales GROUP BY product_name ORDER BY profit DESC LIMIT 10;
Применение: фокус на самых маржинальных позициях для контекстной рекламы.
3. Количество новых лидов по источникам
SELECT source, COUNT(DISTINCT lead_id) AS leads FROM leads WHERE created_at >= CURRENT_DATE - INTERVAL '30 days' GROUP BY source ORDER BY leads DESC;
Кейс: оценка эффективности каналов (SMM, SEO, контекст).
4. Конверсия из лида в сделку
SELECT COUNT(DISTINCT l.lead_id) AS total_leads, COUNT(DISTINCT d.deal_id) AS converted_deals, ROUND(COUNT(DISTINCT d.deal_id) * 100.0 / COUNT(DISTINCT l.lead_id), 2) AS conversion_rate FROM leads l LEFT JOIN deals d ON l.lead_id = d.lead_id WHERE l.created_at BETWEEN '2024-01-01' AND '2024-06-30';
Зачем: понимание качества лидогенерации, корректировка стратегии.
5. Средний чек по сегментам клиентов
SELECT CASE WHEN total_spent < 1000 THEN 'Low' WHEN total_spent BETWEEN 1000 AND 5000 THEN 'Medium' ELSE 'High' END AS segment, AVG(order_amount) AS avg_check FROM ( SELECT customer_id, SUM(amount) AS total_spent, AVG(amount) AS order_amount FROM orders GROUP BY customer_id ) sub GROUP BY segment;
Практика: персонализация предложений для разных сегментов.
6. Клиенты с наибольшим LTV
SELECT customer_id, SUM(amount) AS ltv FROM orders GROUP BY customer_id ORDER BY ltv DESC LIMIT 20;
Использование: выделение VIP-аудитории для специальных акций.
7. Эффективность email-рассылок: открытия и клики
SELECT campaign_name, COUNT(DISTINCT user_id) AS sent, COUNT(DISTINCT CASE WHEN opened THEN user_id END) AS opens, COUNT(DISTINCT CASE WHEN clicked THEN user_id END) AS clicks FROM email_campaigns GROUP BY campaign_name;
Аналитика: оценка вовлеченности и контент-стратегии.
8. Воронка продаж: этапы до покупки
SELECT stage, COUNT(DISTINCT deal_id) AS deals FROM pipeline WHERE created_at >= '2024-01-01' GROUP BY stage ORDER BY deals DESC;
Результат: выявление узких мест, где падает конверсия.
9. Затраты на рекламу vs доход (ROI)
SELECT ad_campaign, SUM(cost) AS total_cost, (SELECT SUM(amount) FROM orders WHERE campaign = ad_campaign) AS revenue, ROUND((SUM(amount) - SUM(cost)) * 100.0 / SUM(cost), 2) AS roi FROM ads JOIN orders ON ads.campaign = orders.campaign GROUP BY ad_campaign;
Ключевое: оценка рентабельности каждого канала продвижения.
10. Повторные покупки: retention rate
WITH user_orders AS ( SELECT customer_id, COUNT(DISTINCT order_id) AS orders_cnt FROM orders GROUP BY customer_id ) SELECT orders_cnt, COUNT(DISTINCT customer_id) AS users FROM user_orders GROUP BY orders_cnt ORDER BY orders_cnt;
Цель: измерение лояльности и эффективности программ лояльности.
Практические рекомендации
- Начните с малого: освойте SELECT, JOIN, GROUP BY, агрегатные функции.
- Используйте CTE (WITH) для сложных запросов — код станет читаемее.
- Тестируйте запросы на копии базы, чтобы не нарушить работу CRM.
- Визуализируйте результаты через Tableau или Google Data Studio — это упростит отчеты для руководства.
- Автоматизируйте регулярные запросы с помощью cron или Airflow для еженедельных дашбордов.
Освоив эти 10 запросов, вы сможете самостоятельно решать 80% типовых задач аналитики, не отвлекая разработчиков. SQL — это ваш ключ к data-driven маркетингу и росту ROI.