SQL-собеседование для аналитика редко проверяет только синтаксис. Чаще всего там смотрят сразу на несколько вещей:
- понимаешь ли ты, как устроены таблицы и связи
- умеешь ли писать рабочие запросы
- замечаешь ли ловушки в данных
- можешь ли объяснить свою логику словами
Именно поэтому многие кандидаты говорят: “Я вроде знаю SQL, но на собеседовании все пошло не так”.
Ниже разберем, как подготовиться так, чтобы было не просто “что-то читал”, а была нормальная рабочая база.
Что обычно проверяют на SQL-собеседовании
Чаще всего вопросы идут по таким блокам:
SELECT,WHERE,ORDER BYGROUP BY, агрегаты,HAVINGJOIN- подзапросы и
CTE - оконные функции
- работа с
NULL - логика запроса и чтение чужого SQL
Иногда добавляют:
- задачи на продуктовую аналитику
- кейсы на воронки, retention, A/B-тесты
- оптимизацию или поиск ошибок в запросе
С чего начать подготовку
Если база еще плавает, не надо сразу идти в “сложные задачи с собеседований”.
Сначала проверь, уверенно ли ты можешь:
- выбрать нужные строки по условию
- сгруппировать данные
- посчитать
SUM,AVG,COUNT - соединить 2 таблицы
- объяснить разницу между
WHEREиHAVING - объяснить разницу между
LEFT JOINиINNER JOIN
Если на этом уровне еще есть пробелы, лучше сначала добить фундамент.
Темы, которые нужно знать обязательно
1. GROUP BY и агрегаты
Это база почти любого SQL-собеседования.
Ты должен спокойно понимать:
- как работает
GROUP BY - почему нельзя просто так добавить столбец в
SELECT - как ведут себя агрегаты с
NULL - когда нужен
HAVING
Типичный вопрос:
SELECT
department,
COUNT(*) AS cnt,
AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING COUNT(*) > 5
Нужно уметь не просто читать это, а объяснить пошагово.
2. JOIN
Это одна из самых частых и самых болезненных тем.
Нужно знать:
INNER JOINLEFT JOIN- почему после
JOINможет увеличиться число строк - как искать причины дублей
Очень частый вопрос:
- почему
LEFT JOINвнезапно раздул таблицу
Если ты умеешь это объяснять, это уже сильный сигнал для интервьюера.
3. WHERE, HAVING, CASE WHEN
Это тоже почти обязательный набор.
Что важно:
WHEREфильтрует строки до группировкиHAVINGфильтрует группы после группировкиCASE WHENпомогает строить условную логику в расчете
4. Оконные функции
Для junior это не всегда must-have на 100%, но если ты знаешь:
ROW_NUMBER()RANK()DENSE_RANK()LAG()LEAD()
то это уже сильно выделяет тебя.
Особенно полезно понимать задачи:
- выбрать последнюю запись по пользователю
- найти предыдущий заказ
- посчитать изменение относительно прошлого периода
5. NULL и логические ловушки
Очень часто кандидаты валятся не на сложных функциях, а на логике.
Например:
NOT INсNULL- деление целых чисел
- поведение
COUNT(column)иCOUNT(*) - сравнение с
NULLчерез=
Именно такие мелочи часто показывают, насколько человек реально писал запросы руками.
Какие задачи чаще всего дают
Обычно задачи на собеседовании можно разделить на 4 типа.
1. Написать запрос с нуля
Например:
- найти клиентов с более чем 3 заказами
- посчитать выручку по категориям
- вывести последний заказ каждого пользователя
2. Найти ошибку в чужом запросе
Очень полезный формат, потому что в реальной работе ты не всегда пишешь код с нуля. Часто нужно читать и исправлять уже существующий SQL.
3. Объяснить разницу между конструкциями
Например:
WHEREvsHAVINGUNIONvsUNION ALLROW_NUMBERvsRANKINNER JOINvsLEFT JOIN
4. Решить задачу на логику данных
Например:
- почему после
JOINстало больше строк - почему сумма не сходится
- почему запрос ничего не вернул
Вот это особенно приближено к реальной аналитике.
Как готовиться эффективно
Самый хороший формат подготовки:
1. Повторить теорию по блокам
Не пытайся “читать все подряд”. Разбей по темам:
- день 1: агрегации и группировки
- день 2:
JOIN - день 3: подзапросы и
CTE - день 4: оконные функции
- день 5: задачи с ошибками и ловушками
2. Каждый блок закреплять руками
Просто читать мало. Нужно писать запросы самому.
Даже если задача кажется простой, лучше набить запрос руками, чем просто “понять глазами”.
3. Тренировать устное объяснение
На собеседовании важно не только решить задачу, но и проговорить ход мысли.
Например:
- что ты делаешь сначала
- почему выбрал именно
LEFT JOIN - на каком этапе применяешь фильтр
- какие риски по дублям ты видишь
Это сильно повышает качество ответа.
Частые ошибки кандидатов
1. Сразу писать сложный запрос без декомпозиции
Лучше идти по шагам:
- понять задачу
- определить таблицы
- определить ключи
- решить, где фильтр, где агрегация, где join
2. Не уточнять бизнес-логику
Иногда одна и та же задача допускает разные трактовки.
Например:
- “активный пользователь” — это кто?
- “последний заказ” — по дате создания или по дате оплаты?
Хороший кандидат не боится уточнять такие моменты.
3. Игнорировать дубликаты
Очень частая ошибка после JOIN.
Если ты не думаешь о кратности связей, можно получить формально рабочий запрос, но неправильный результат.
4. Пугаться, если не помнишь точный синтаксис
На хорошем собеседовании обычно важнее логика, чем идеальная память на детали.
Если ты честно объясняешь:
- что хочешь сделать
- какой инструмент для этого нужен
- как бы ты это написал
это уже лучше, чем молча зависнуть.
Что можно сказать на собеседовании, если не уверен
Например:
- “Я бы решал это через
ROW_NUMBER(), чтобы выбрать последнюю запись в группе” - “Похоже, здесь риск размножения строк после
JOIN, я бы проверил уникальность ключа” - “Если задача в отборе после агрегации, здесь нужен
HAVING, а неWHERE”
Такие формулировки показывают зрелое мышление даже если запрос еще не дописан до конца.
Мини-план подготовки на 7 дней
День 1
SELECT,WHERE,ORDER BY- простые фильтры и сортировки
День 2
GROUP BYCOUNT,SUM,AVGHAVING
День 3
INNER JOINLEFT JOIN- дубли после join
День 4
- подзапросы
CTE
День 5
ROW_NUMBERRANKLAGLEAD
День 6
- задачи на собеседования
- разбор типовых ошибок
День 7
- проговорить вслух решения
- повторить слабые места
Итог
Подготовка к SQL-собеседованию аналитику — это не про “выучить 100 функций”. Это про то, чтобы уверенно держать базу и спокойно объяснять свою логику.
Если ты хорошо понимаешь:
- агрегации
JOIN- фильтрацию
- оконные функции
- ловушки с
NULL
то уже будешь чувствовать себя на интервью намного увереннее.
И самое важное: на собеседовании часто выигрывает не тот, кто знает самый сложный SQL, а тот, кто мыслит структурно и аккуратно работает с данными.