SQL-скрининг — это первый технический фильтр, который помогает отсеять кандидатов, не владеющих языком на требуемом уровне. Грамотно выстроенный скрининг экономит время технических специалистов и повышает качество финальных собеседований.
Зачем нужен SQL-скрининг
Резюме врут. Кандидат пишет «уверенный пользователь SQL», имея в виду умение написать SELECT * FROM table. Скрининг позволяет до начала технического интервью понять реальный уровень владения языком.
По данным рекрутинговых агентств, до 40% кандидатов на позиции аналитиков завышают свои SQL-навыки. Короткий тест на 20–30 минут отсеивает неподходящих до разговора с техническим лидом.
Этапы правильного SQL-скрининга
1. Определите требуемый уровень
Перед тем как составлять тест, зафиксируйте: что кандидат должен делать в работе? Если аналитик будет строить отчёты в BI-инструменте, достаточно базовых SELECT и JOIN. Если писать сложные ETL-пайплайны — нужны CTE, оконные функции и понимание индексов.
Условная шкала:
- Junior: SELECT, WHERE, GROUP BY, простые JOIN
- Middle: подзапросы, CTE, оконные функции, работа с датами
- Senior: оптимизация, EXPLAIN, работа с транзакциями, специфика PostgreSQL/ClickHouse
2. Выберите формат теста
Письменный тест — кандидат получает задачи и присылает SQL-запросы. Легко проверить, но есть риск помощи со стороны.
Онлайн-платформа — кандидат решает задачи в браузере, запросы выполняются на реальной БД. Наиболее объективный формат.
Live-кодинг — кандидат решает задачи в реальном времени при наблюдении. Дорого по времени, но даёт максимальное понимание хода мыслей.
3. Структура теста для аналитика
Хорошо сбалансированный тест на позицию аналитика данных включает:
-- Задача 1: базовая выборка и фильтрация (уровень: Junior)
-- Найдите топ-5 клиентов по сумме заказов за последний месяц
SELECT
customer_id,
SUM(order_amount) AS total_amount
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY customer_id
ORDER BY total_amount DESC
LIMIT 5;
-- Задача 2: JOIN нескольких таблиц (уровень: Middle)
-- Найдите менеджеров, у которых нет ни одной сделки в этом квартале
SELECT m.name
FROM managers m
LEFT JOIN deals d
ON d.manager_id = m.id
AND d.created_at >= DATE_TRUNC('quarter', CURRENT_DATE)
WHERE d.id IS NULL;
-- Задача 3: оконные функции (уровень: Middle+)
-- Рассчитайте долю каждого продукта в выручке своей категории
SELECT
product_name,
category,
revenue,
ROUND(100.0 * revenue / SUM(revenue) OVER (PARTITION BY category), 2) AS pct_of_category
FROM product_sales;
4. Временные рамки
Оптимальная длительность скринингового теста: 20–40 минут. Более длинный тест снижает конверсию хороших кандидатов — они просто не станут его проходить.
Что оценивать в ответах
Правильность результата — запрос должен возвращать верные данные. Это необходимое условие, но не достаточное.
Читаемость кода — отступы, алиасы таблиц, комментарии. Кандидат, который пишет понятный код, будет легче работать в команде.
Оптимальность — нет ли лишних вложенных подзапросов там, где достаточно JOIN? Не делается ли полный скан там, где можно использовать индекс?
Способ решения — иногда важно, как именно решена задача. Кандидат, использующий CTE вместо вложенных подзапросов, думает о поддерживаемости кода.
Красные флаги
- Кандидат использует
SELECT *везде, даже когда нужны конкретные поля - Запросы работают, но написаны неэффективно (вложенные SELECT вместо JOIN)
- Кандидат не знает разницы между
WHEREиHAVING - Нет понимания порядка выполнения SQL-запроса
Как сообщить результат кандидату
Даже при отрицательном решении дайте обратную связь: «Базовые запросы написаны верно, но задания с оконными функциями вызвали затруднения». Это создаёт позитивный опыт взаимодействия с брендом работодателя.
Итого: чеклист скрининга
- Зафиксирован требуемый уровень SQL для позиции
- Тест разбит на уровни сложности (easy/medium/hard)
- Время прохождения не превышает 40 минут
- Критерии оценки задокументированы до начала скрининга
- Есть механизм объективной проверки (не только «правильно/неправильно»)
Хотите прокачать SQL-навыки своих кандидатов или проверить собственный уровень? Пройдите практические задания на SQLlab.ru — сотни интерактивных задач от базовых до продвинутых.