Atterna
RUEN
Получить доступ

Вопросы по SQL на собеседовании аналитика данных — 8 задач с ответами

На этой странице · 10

Хорошие интервьюеры проверяют не только синтаксис, но и то, что на самом деле считает запрос. Отвечайте прямо здесь — каждый вариант объясняет себя.

1. COUNT(DISTINCT) после фильтра

Классическая разминка. Ловушка — перепутать порядок шагов: сначала срабатывает фильтр, потом подсчёт.

Практика · вопрос 1 из 8

order_idbuyerstatus
101Annapaid
102Leoncancelled
103Annapaid
104Ninapaid
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

productrating
Wireless headphones4.6
Set of wine glasses4.5
Scented candleNULL
Travel mug4.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.idamountтоваров в заказе
1€503
2€301
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 и графиками
  • Прогресс на любом устройствеШпаргалка и карточки повторения всегда с тобой
Создать бесплатный аккаунт Бесплатно · 30 секунд · без картыУже есть аккаунт? Войти

Примеры — из Meridian, вымышленного учебного маркетплейса Atterna.