Вопросы по SQL на собеседовании аналитика данных — 8 задач с ответами
На этой странице · 10
Хорошие интервьюеры проверяют не только синтаксис, но и то, что на самом деле считает запрос. Отвечайте прямо здесь — каждый вариант объясняет себя.
1. COUNT(DISTINCT) после фильтра
Классическая разминка. Ловушка — перепутать порядок шагов: сначала срабатывает фильтр, потом подсчёт.
Практика · вопрос 1 из 8
| order_id | buyer | status |
|---|---|---|
| 101 | Anna | paid |
| 102 | Leon | cancelled |
| 103 | Anna | paid |
| 104 | Nina | paid |
SELECT COUNT(DISTINCT buyer) FROM orders WHERE status = 'paid';
Что вернёт этот запрос?
Готовим практику…
Что хочет услышать интервьюер: прежде чем считать, вы говорите, что такое одна строка (заказ, а не покупатель).
2. COUNT(column) — это не число людей
Запрос, который выполняется и возвращает правдоподобное число, — самая опасная разновидность ошибки.
Практика · вопрос 2 из 8
SELECT COUNT(buyer_id) FROM orders WHERE status = 'paid';
Маркетинг просил число клиентов. Что на самом деле считает этот запрос?
Готовим практику…
Скажите вслух: «COUNT(*) считает строки, COUNT(столбец) — значения не NULL; чтобы посчитать клиентов, нужен COUNT(DISTINCT id_клиента)».
3. NULL в среднем
Пустые значения не вызывают ошибок. Они меняют то, что охватывает агрегат.
Практика · вопрос 3 из 8
| product | rating |
|---|---|
| Wireless headphones | 4.6 |
| Set of wine glasses | 4.5 |
| Scented candle | NULL |
| Travel mug | 4.8 |
SELECT AVG(rating) FROM catalog;
Что вернёт запрос?
Готовим практику…
Возможный уточняющий вопрос: как посчитать товары без оценки? COUNT(*) - COUNT(rating) или COUNT(*) FILTER (WHERE rating IS NULL).
4. WHERE или HAVING
WHERE фильтрует строки до группировки, HAVING — группы после неё. Интервьюеры любят этот вопрос: неправильные ответы выглядят почти правильными.
Практика · вопрос 4 из 8
Нужны категории, в которых больше 100 оплаченных заказов. Какой запрос?
Готовим практику…
5. Группировка не с той гранулярностью
Метка времени — не дата. Группировка по ней даёт строку на каждый момент, а не на каждый день.
Практика · вопрос 5 из 8
SELECT created_at, COUNT(*) FROM orders GROUP BY created_at;
Нужны были заказы по дням. Что получится?
Готовим практику…
Привычка: перед GROUP BY назовите гранулярность результата — одна строка на день, на клиента, на категорию.
6. JOIN, который завышает сумму
Этот вопрос любят на собеседованиях: это частая причина ошибок в настоящих дашбордах.
Практика · вопрос 6 из 8
| orders.id | amount | товаров в заказе |
|---|---|---|
| 1 | €50 | 3 |
| 2 | €30 | 1 |
SELECT SUM(o.amount) FROM orders o JOIN items i ON i.order_id = o.id;
Что вернёт этот запрос?
Готовим практику…
Исправить можно двумя способами: агрегировать до соединения или соединять только то, что нужно. Полная практика в два шага на настоящих итогах Meridian — в гайде о дублях после JOIN.
7. Условие в WHERE, которое ломает LEFT JOIN
LEFT JOIN сохраняет строки без пары, заполняя их NULL, — пока условие на правую таблицу снова их не уберёт.
Практика · вопрос 7 из 8
SELECT u.id, COUNT(o.id) AS paid_orders FROM users u LEFT JOIN orders o ON o.buyer_id = u.id WHERE o.status = 'paid' GROUP BY u.id;
Попадут ли в результат пользователи без оплаченных заказов — с нулём?
Готовим практику…
8. Вопрос за запросом
Некоторые интервьюеры заканчивают так: результат верный, а вывод из него — нет. Этот вопрос взят прямо из первого кейса Atterna.
Практика · вопрос 8 из 8
Заказы с AUTUMN20 в среднем в 2,5 раза больше, чем без него! Можно вписать в декабрьский план «AUTUMN20 увеличивает корзину»?
-- запрос верный заказы с AUTUMN20 €91,81 в среднем без кода €36,60 в среднем
Запрос верный, числа настоящие. Что проверить первым?
Готовим практику…
Почему это важно: написать запрос становится всё проще — черновик напишет AI-ассистент. Решить, что означает число и чего оно сказать не может, — это то, что нужно от вас команде.
Как готовиться
- Читайте каждый запрос в логическом порядке выполнения: FROM и JOIN, WHERE, GROUP BY, HAVING, SELECT, ORDER BY.
- Перед любым агрегатом проговорите, что такое одна строка и чем должна быть одна строка результата.
- Для каждой суммы спросите себя: может ли строка повториться? Может ли значение отсутствовать?
- Тренируйтесь на данных с отменёнными заказами, возвратами и корзинами от нескольких продавцов, а не на игрушечных таблицах.
Курс Start за десять коротких дней проведёт вас от чтения таблицы до JOIN и оконных функций; дни 1–2 доступны без аккаунта, а бесплатный аккаунт открывает все десять. Если вы уже пишете SQL, кейс 1 — это 17-минутная рабочая просьба как раз с таким убедительным, но неверным числом, как в вопросе 8.
Частые вопросы
Какие вопросы по SQL задают на собеседовании аналитика данных?
В основном про подсчёт и соединения: COUNT и COUNT(DISTINCT), GROUP BY с HAVING, работа с NULL, INNER и LEFT JOIN, задвоенные суммы после соединения и часто одна оконная функция (нарастающий итог или ранг). Сильные кандидаты ещё и объясняют, что означает результат.
Как отвечать на вопрос по SQL, если не уверены?
Скажите, что такое одна строка в каждой таблице, чем должна быть одна строка результата и какие строки могут повториться или пропасть. Интервьюеры ценят такое рассуждение больше, чем заученный запрос.
Стоит ли учить SQL, если запросы пишет AI?
Да. AI быстро пишет правдоподобный SQL — в том числе запросы, которые считают дважды после соединения или теряют строки в LEFT JOIN. Нужно читать SQL достаточно хорошо, чтобы поймать это, прежде чем число дойдёт до решения.
Где потренироваться отвечать на вопросы по SQL на реалистичных данных?
Эта страница и практика по JOIN бесплатны. Atterna Start и Cases используют учебный маркетплейс с отменёнными заказами, возвратами и корзинами от нескольких продавцов; все десять дней Start (с бесплатным аккаунтом) и кейс 1 бесплатны.
Ответов: 0 из 8
Вернитесь к оставшимся вопросам выше.Каждый ответ открывает объяснение, в том числе неверный.
Попрактикуйся бесплатно
Бесплатный аккаунт откроет практические уроки на реалистичном маркетплейсе.
- Все 10 дней курса SQLОт первой таблицы до JOIN и оконных функций
- Эпизод 1 MeridianЦелая неделя аналитика: рекорд, которого не было
- Первый проект в портфолиоГотовые работы — проектом для GitHub, с твоим SQL и графиками
- Прогресс на любом устройствеШпаргалка и карточки повторения всегда с тобой
Примеры — из Meridian, вымышленного учебного маркетплейса Atterna.