SQL-вопросы на собесе аналитика в Т-Банке

Проверь себя · 1/3разбор после ответа
Есть таблицы payments(user_id) и refunds(user_id). Нужно получить пользователей, у которых был платёж, но не было ни одного возврата. Какой запрос корректнее всего описывает задачу?

О чём эта статья

Т-Банк (ранее Тинькофф) — одна из компаний с сильной культурой аналитики в России. Для аналитических ролей здесь традиционно высокая планка по SQL. Ниже — типы задач, которые полезно проработать перед собеседованием.

Информация основана на публичных источниках и опыте кандидатов. Конкретный набор задач зависит от команды и уровня позиции. Актуальные вакансии и требования — на официальной странице Т-Банка.

Формат секции

Обычно одна-две технические секции по 45–90 минут. Живое решение задач в общем редакторе. Важно не только получить правильный ответ, но и проговаривать ход мысли, уточнять условия, обсуждать альтернативы.

Типы задач

Оконные функции

Обязательный блок. Стоит уверенно владеть:

  • ROW_NUMBER, RANK, DENSE_RANK
  • LAG, LEAD
  • Агрегации с OVER
  • Оконные рамки

Полезно:

Сложные JOIN'ы

Задачи с тремя-четырьмя таблицами, где нужно аккуратно выбирать тип соединения и условия.

Расчёт банковских метрик

  • Просрочка и её доли по когортам
  • Активные клиенты, их сегментация
  • Транзакционные метрики за период
  • Подсчёт баланса на конец периода

Антифрод-паттерны

Классические задачи:

  • Много транзакций за короткое время по одной карте
  • Подозрительные гео-переходы
  • Повышенная доля отклонений у продавца
WITH with_prev AS (
    SELECT
        card_id,
        created_at,
        country,
        LAG(country) OVER (PARTITION BY card_id ORDER BY created_at) AS prev_country,
        LAG(created_at) OVER (PARTITION BY card_id ORDER BY created_at) AS prev_time
    FROM transactions
)
SELECT *
FROM with_prev
WHERE country != prev_country
  AND EXTRACT(EPOCH FROM (created_at - prev_time)) / 3600 < 1;

Когортный анализ

Retention и удержание клиентов по месяцам. Полезно:

Оптимизация запросов

Ожидают, что вы:

  • Прочитаете план (EXPLAIN)
  • Предложите индекс или переписанный JOIN
  • Обсудите партиционирование или материализацию

Полезно: SQL-оптимизация для аналитика.

Прокачай SQL для собеса
500+ задач по SQL: оконные функции, JOIN, CTE — с разбором каждой
Тренировать SQL в Telegram

Python и аналитика

Помимо SQL в Т-Банке часто проверяют Python на уровне pandas: чтение данных, трансформации, агрегации, базовая визуализация.

Для ML-направлений — sklearn, типичные задачи классификации, метрики AUC / Gini / KS. Полезно:

Как показать себя

  • Уточняйте условия задачи перед тем, как писать
  • Предлагайте несколько подходов и обсуждайте trade-off'ы
  • Проговаривайте edge cases: NULL, дубли, граничные условия
  • Будьте честными: если чего-то не помните, скажите и предложите, как это обычно решается

Связанные темы

FAQ

Какой уровень SQL ожидают?

Уверенный middle или выше: оконные функции, CTE, оптимизация.

ClickHouse нужен?

Для многих команд работа идёт в ClickHouse — знание полезно.

Python обязателен?

Базовый pandas как минимум; для ML-ролей — дополнительно sklearn.