SQLLab
Все статьи

5 типичных ошибок кандидатов на SQL-собеседовании

Разбор пяти самых частых ошибок, которые совершают кандидаты на SQL-собеседованиях, и как их избежать.

8 февраля 2026 г.·4 мин чтения·

Каждый HR, проводивший SQL-скрининг, видел одни и те же ошибки снова и снова. Некоторые из них технические, некоторые поведенческие. Понимание этих паттернов помогает и нанимателям лучше оценивать кандидатов, и самим кандидатам приходить подготовленными.

Ошибка 1: Писать запрос без уточнения условий

Один из самых надёжных способов провалить техническое интервью — немедленно броситься писать код, не поняв задачу.

Как это выглядит: интервьюер формулирует задачу, кандидат молча начинает печатать. Результат — технически правильный запрос, решающий не ту задачу.

Пример: «Найдите клиентов с наибольшей выручкой». Хороший кандидат спросит: «За какой период? Учитывать отменённые заказы? Нужны топ-N или все выше порога?»

Что ищет интервьюер: умение формализовать бизнес-требование — ключевой навык аналитика.

Как оценить: кандидат, который задаёт уточняющие вопросы, скорее всего, так же будет работать с реальными задачами от бизнеса. Это большой плюс.

Ошибка 2: Неправильное использование NULL

NULL — ловушка, в которую попадает большинство Junior-кандидатов и часть Middle.

Типичная ошибка:

-- Неверно: это условие НИКОГДА не вернёт строки
WHERE some_column = NULL

-- Верно:
WHERE some_column IS NULL

Ещё одна ловушка:

-- NOT IN с NULL работает неожиданно
-- Если в подзапросе есть хотя бы один NULL — результат пуст
SELECT * FROM orders
WHERE customer_id NOT IN (SELECT id FROM blacklist);
-- Если blacklist содержит NULL → результат всегда пуст!

-- Безопасная альтернатива:
SELECT * FROM orders o
WHERE NOT EXISTS (
    SELECT 1 FROM blacklist b WHERE b.id = o.customer_id
);

Как оценить: задайте прямой вопрос: «Что вернёт WHERE column != 5, если в колонке есть NULL-значения?» Правильный ответ: строки с NULL исключатся из результата, так как NULL != 5 возвращает NULL, а не TRUE.

Ошибка 3: Неэффективные запросы

Кандидат находит правильное решение, но пишет код, который плохо масштабируется.

Пример: коррелированный подзапрос вместо JOIN:

-- Медленно: для каждой строки выполняется отдельный подзапрос
SELECT
    e.name,
    (SELECT d.name FROM departments d WHERE d.id = e.department_id) AS dept
FROM employees e;

-- Быстро: один JOIN
SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.department_id;

Ещё пример: функция в условии WHERE убивает индекс:

-- Плохо: индекс по created_at не используется
WHERE YEAR(created_at) = 2026

-- Хорошо: индекс работает
WHERE created_at >= '2026-01-01' AND created_at < '2027-01-01'

Как оценить: для Middle и Senior добавьте вопрос «Как бы вы оптимизировали этот запрос?» после решения задачи.

Ошибка 4: Путаница с ORDER BY и оконными функциями

Кандидаты, знакомые с оконными функциями поверхностно, часто допускают семантические ошибки.

Типичная ошибка:

-- Кандидат хочет найти 3 последних заказа каждого клиента
-- Неверно: ORDER BY в оконной функции не влияет на итоговую сортировку
SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) AS rn
    FROM orders
) t
WHERE rn <= 3;
-- Результат верный, но итоговый порядок строк не определён

-- Правильно добавить ORDER BY в конце:
... ORDER BY customer_id, order_date DESC;

Более серьёзная ошибка — не понимать, что оконные функции выполняются ПОСЛЕ WHERE и GROUP BY. Это приводит к неверным фильтрам:

-- Это НЕ работает — нельзя фильтровать по оконной функции в WHERE
SELECT * FROM orders
WHERE ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY date) = 1;
-- Нужен подзапрос или CTE!

Ошибка 5: Молчание при затруднении

Поведенческая ошибка, которая стоит дорого на live-кодинге.

Кандидат застрял, но вместо того чтобы рассуждать вслух, молчит несколько минут или говорит «подождите, я вспоминаю». Интервьюер не понимает, что происходит.

Что ожидается: «Хорошо, мне нужно найти N-й наибольший элемент. Могу сделать это через ORDER BY + LIMIT + OFFSET, или через DENSE_RANK. Давайте попробую второй вариант, потому что он лучше обрабатывает дубликаты...»

Как оценить: прямо скажите в начале интервью: «Нам важно понимать ваш ход мыслей, поэтому комментируйте вслух, что вы делаете». Если кандидат игнорирует это — минус балл.


Как использовать эту информацию в скрининге

Для каждой из пяти ошибок есть конкретная проверочная задача или вопрос:

ОшибкаПроверочный метод
Не уточняет задачуДайте намеренно размытую формулировку
Проблемы с NULLЗадача с NOT IN и NULL в подзапросе
Неэффективные запросыПопросите оптимизировать медленный запрос
Оконные функцииЗадача на ROW_NUMBER с фильтрацией
МолчаниеЯвная инструкция думать вслух

Хотите, чтобы кандидаты избегали этих ошибок? Порекомендуйте подготовку на SQLlab.ru — там разбираются именно такие типичные ловушки через практику.

Похожие статьи

Попробуй на практике

Тренажёр с реальными задачами — бесплатно и без регистрации

Открыть тренажёр →