SQL — не только для разработчиков и аналитиков. Продакты и маркетологи с SQL в 2–3 раза эффективнее коллег без него.
Почему менеджеру нужен SQL
Независимость. Без SQL вы зависите от аналитиков: поставили задачу, ждёте 2–5 дней, получили ответ — возникли новые вопросы, цикл повторяется. Со SQL вы отвечаете на вопросы сами за 5 минут.
Скорость решений. Гипотеза проверяется немедленно, пока встреча ещё идёт.
Точность формулировок. Когда вы можете написать запрос сами, вы точнее ставите задачи аналитикам для сложных задач.
Конкурентное преимущество. По данным hh.ru, менеджеры с SQL получают на 20–35% больше.
Что можно делать с базовым SQL
Проверить гипотезу немедленно
«А правда ли что пользователи из мобильного приложения покупают чаще?»
SELECT
source,
COUNT(DISTINCT user_id) AS users,
COUNT(*) AS orders,
ROUND(1.0 * COUNT(*) / COUNT(DISTINCT user_id), 2) AS orders_per_user
FROM orders
JOIN users ON orders.user_id = users.id
GROUP BY source;
Сегментировать пользователей
-- Разбивка по сумме покупок
SELECT
CASE
WHEN total_spent >= 50000 THEN 'VIP'
WHEN total_spent >= 10000 THEN 'Лояльный'
ELSE 'Новый'
END AS segment,
COUNT(*) AS users
FROM (
SELECT user_id, SUM(amount) AS total_spent FROM orders GROUP BY user_id
) t
GROUP BY segment;
Найти отток
-- Пользователи, не делавшие заказов 60+ дней
SELECT COUNT(*) AS churned_users
FROM users
WHERE id NOT IN (
SELECT DISTINCT user_id FROM orders
WHERE created_at > NOW() - INTERVAL '60 days'
);
Посмотреть эффект акции
-- Сравнение выручки до и после акции
SELECT
CASE
WHEN created_at < '2024-03-01' THEN 'До акции'
ELSE 'После акции'
END AS period,
COUNT(DISTINCT DATE(created_at)) AS days,
SUM(amount) AS revenue,
ROUND(SUM(amount) / COUNT(DISTINCT DATE(created_at)), 0) AS revenue_per_day
FROM orders
WHERE created_at BETWEEN '2024-02-01' AND '2024-04-01'
GROUP BY period;
Найти топ-продукты
SELECT
p.name,
COUNT(*) AS orders_count,
SUM(oi.quantity) AS units_sold,
SUM(oi.price * oi.quantity) AS revenue
FROM order_items oi
JOIN products p ON oi.product_id = p.id
WHERE oi.created_at >= NOW() - INTERVAL '30 days'
GROUP BY p.id, p.name
ORDER BY revenue DESC
LIMIT 10;
Что НЕ нужно менеджеру
Менеджеру не нужно:
- Оконные функции (достаточно базовых агрегатов)
- Оптимизация запросов
- DDL (создание таблиц)
- Хранимые процедуры
Достаточно SELECT + WHERE + GROUP BY + простые JOIN.
Как научиться за 3 недели
Неделя 1: SELECT, WHERE, ORDER BY — 15 задач Неделя 2: GROUP BY, COUNT, SUM, AVG — 15 задач Неделя 3: LEFT JOIN (пользователи + заказы) — 10 задач
Итого: ~2–3 часа в неделю. После этого 80% повседневных аналитических вопросов решаются самостоятельно.
Реальная история
Типичный сценарий: продакт хочет узнать конверсию по источникам трафика. Без SQL — задача аналитику, ответ через 3 дня. С SQL — 10 минут на написание запроса, ответ получен на той же встрече.
Умение задавать вопросы данным напрямую меняет скорость принятия решений.