SQL на собеседовании аналитика
Самая частая секция собеса аналитика — это SQL. От Junior просят оконные функции и JOIN, от Middle — gaps-and-islands, когортную ретенцию и оптимизацию; на Senior спрашивают про планы запросов и трюки с CTE.
оконные функцииJOINкогортная ретенцияgaps and islandsPARTITION BYоптимизация запросов
Лёгкие — начни отсюда
SQL — второй максимум зарплаты (с дублями и без)
Базовые трюкиЛёгкаяJunior
Может ли измениться результат запроса, если в LEFT JOIN поменять таблицы местами?
JOIN-ыЛёгкаяJunior
Сколько будет 5 + NULL в SQL?
NULL и трёхзначная логикаЛёгкаяJunior
Можно ли делать JOIN таблицы саму на себя?
JOIN-ыЛёгкаяJunior
Может ли ORDER BY уменьшить число строк в результате?
Семантика SQLЛёгкаяJunior
Какой оператор SELECT/FROM/WHERE/GROUP BY выполняется последним?
Семантика SQLЛёгкаяJunior
Какие функции возвращают значения из соседних строк?
Оконные функцииЛёгкаяJunior
SQL — произведения, издававшиеся более 5 раз (библиотека)
Агрегация и фильтрацияЛёгкаяMiddle
Средние
SQL — актуальные цены, фильтр и квартальная агрегация заказов
Оконные функции и группировкиСредняяJunior
SQL — ежедневная воронка заказов с DAU, конверсией и средним чеком
Оконные функции и воронкиСредняяMiddle
SQL — месячная когортная retention-таблица
Когорты и retentionСредняяMiddle
SQL — накопительная сумма заказов и rolling 7d на пользователя
Оконные функцииСредняяMiddle
SQL — RFM-сегментация клиентов через NTILE
СегментацияСредняяMiddle
SQL — серия подряд идущих логинов пользователя (gaps & islands)
Группировка по сериямСредняяMiddle
Когда условие из WHERE можно перенести в ON без изменения результата
JOIN-ыСредняяJunior
Минимум и максимум строк в FULL JOIN таблиц 10 × 100
JOIN-ыСредняяJunior
Сложные
SQL — топ-10 неблагонадёжных пользователей библиотеки
Скоринг и ранжированиеСложнаяMiddle
SQL — найти все связанные записи по id/phone/mail (рекурсивный CTE)
Recursive CTEСложнаяMiddle
SQL — сводная таблица «N-й по счёту договор за 2020» по полу клиента
Window-функции и pivotСложнаяMiddle
ScoreWarrier: средние платежи в следующие 7/30 дней по дням жизни игрока
Скользящие окна и LTVСложнаяMiddle
Aviasales Booking — SQL: исправить запрос по воронке оплаты
Рефакторинг и баги SQLСложнаяMiddle
Яндекс — Боты и только боты: найти фейковые сайты с подменой региона
Аномалии трафикаСложнаяSenior
Альфа-Банк SQL — периоды действия сегментов клиента (gaps and islands)
Gaps and IslandsСложнаяMiddle
ЛокоБанк SQL — выборка для SMS-рассылки по тарифу «амурский тигр»
Многоуровневые JOINСложнаяMiddle