SQL-вопросы на собесе аналитика в Яндекс
orders поле promo_code может быть NULL. Что произойдёт со строкой, где promo_code = NULL, при фильтре WHERE promo_code <> 'NONE'?О чём эта статья
В Яндексе планка по SQL у аналитиков традиционно высокая. В этой статье — обзор типов задач, которые полезно проработать перед собеседованием.
Информация основана на публичных источниках и опыте кандидатов. Конкретный набор задач зависит от команды и уровня позиции. Актуальные вакансии и требования — на карьерной странице Яндекса.
Формат секции
Обычно это одна-две технические секции по 45–90 минут: живое решение задач в общем редакторе или на доске. Интервьюер просит думать вслух, уточнять условия и разбирать подход, а не только получать правильный ответ.
Типы задач
Оконные функции
Почти обязательный блок. Стоит уверенно владеть:
ROW_NUMBER,RANK,DENSE_RANKLAG,LEADSUM,AVG,COUNTсOVER- рамки
ROWS BETWEENиRANGE BETWEEN
Полезно: задачи по оконным функциям и шпаргалка по оконным функциям.
Сессионизация событий
Классика для интернет-компании: разбить поток действий пользователя на сессии (например, с разрывом в 30 минут).
Подход через LAG и накопительную сумму:
WITH gaps AS (
SELECT
user_id,
event_time,
EXTRACT(EPOCH FROM (event_time - LAG(event_time) OVER (PARTITION BY user_id ORDER BY event_time))) / 60 AS gap_min
FROM events
),
session_id AS (
SELECT
user_id,
event_time,
SUM(CASE WHEN gap_min > 30 OR gap_min IS NULL THEN 1 ELSE 0 END)
OVER (PARTITION BY user_id ORDER BY event_time) AS session_num
FROM gaps
)
SELECT user_id, session_num, MIN(event_time) AS start_at, MAX(event_time) AS end_at, COUNT(*) AS events
FROM session_id
GROUP BY user_id, session_num;Когортный анализ и retention
Часто просят посчитать retention D1 / D7 / D30 для когорты по месяцу регистрации. Полезные материалы:
Воронки конверсии
Последовательная воронка с учётом порядка событий и таймингов. Базовый приём — агрегация по пользователю и проверка времён событий.
Полезно: SQL для воронок конверсии.
Оптимизация запросов
Могут дать медленный запрос и попросить ускорить. Ожидают, что вы:
- Прочитаете план (
EXPLAIN) - Предложите индекс или переписанный JOIN
- Обсудите материализацию или партиционирование
Полезно: SQL-оптимизация для аналитика.
ClickHouse-специфика
Многие команды в Яндексе работают на ClickHouse, поэтому полезно понимать:
- Массивы и
arrayJoin - Функции с суффиксом
If(sumIf,countIf) - Приближённые функции квантилей
- Материализованные представления
Полезно: шпаргалка по ClickHouse.
Как показать себя
- Уточняйте условия задачи до того, как начнёте писать
- Говорите вслух: что собираетесь делать, почему этот подход
- Не стесняйтесь проговаривать альтернативы и их ограничения
- Разбирайте edge cases: NULL, дубли, пустые выборки
- Честно признавайтесь, если что-то не помните наизусть
Связанные темы
- Собеседование аналитика в Яндекс
- 50 вопросов по SQL
- Задачи SQL на собесе
- Как подготовиться к SQL-собесу за неделю
FAQ
На каком уровне SQL ожидают?
Уверенный middle или выше: оконные функции, CTE, оптимизация.
Нужен ли ClickHouse?
Для многих команд — сильный плюс. Для некоторых — обязательное условие.
Язык интервью?
Обычно русский.