Тестовое задание аналитика данных
Тестовое задание - обязательный этап отбора в большинстве компаний. Разберем типичные задачи и как их решать.
Типы тестовых заданий
- SQL-задачи - самый частый формат (80% компаний)
- Продуктовые кейсы - анализ метрик, A/B тесты
- Работа с данными - Excel/Python анализ датасета
- Презентация - подготовить отчет по данным
Примеры SQL-задач
Яндекс Активные пользователи
Найди пользователей, которые совершили более 3 заказов за последние 30 дней.
Решение:
SELECT user_id, COUNT(*) as order_count
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY user_id
HAVING COUNT(*) > 3;
Тинькофф Retention по когортам
Рассчитай retention 7-го дня для когорт пользователей по месяцу регистрации.
Решение:
WITH cohorts AS (
SELECT
user_id,
DATE_TRUNC('month', reg_date) as cohort
FROM users
),
activity AS (
SELECT DISTINCT user_id, DATE(event_date) as active_date
FROM events
)
SELECT
c.cohort,
COUNT(DISTINCT c.user_id) as cohort_size,
COUNT(DISTINCT CASE
WHEN a.active_date = c.cohort + INTERVAL '7 days'
THEN c.user_id
END) as retained,
ROUND(100.0 * COUNT(DISTINCT CASE
WHEN a.active_date = c.cohort + INTERVAL '7 days'
THEN c.user_id
END) / COUNT(DISTINCT c.user_id), 2) as retention_d7
FROM cohorts c
LEFT JOIN activity a ON c.user_id = a.user_id
GROUP BY c.cohort;
Сбер Оконные функции
Для каждого клиента найди разницу между текущей и предыдущей транзакцией.
Решение:
SELECT
client_id,
transaction_date,
amount,
amount - LAG(amount) OVER (
PARTITION BY client_id
ORDER BY transaction_date
) as diff_from_prev
FROM transactions;
Пример продуктового кейса
VK A/B тест
Мы провели A/B тест нового дизайна кнопки. Результаты:
- Контроль: 10,000 юзеров, 500 кликов (CR = 5%)
- Тест: 10,000 юзеров, 550 кликов (CR = 5.5%)
Вопросы: Статистически значим ли результат? Стоит ли раскатывать?
Решение:
1. Рассчитаем p-value (chi-square тест):
from scipy.stats import chi2_contingency
table = [[500, 9500], [550, 9450]]
chi2, p_value, dof, expected = chi2_contingency(table)
print(f"p-value: {p_value:.4f}") # 0.1573
2. p-value = 0.157 > 0.05, результат НЕ статистически значим.
3. Рекомендация: не раскатывать, нужно больше данных или пересмотреть гипотезу.
Чек-лист подготовки
- Повтори основы SQL (JOIN, GROUP BY, подзапросы)
- Изучи оконные функции (ROW_NUMBER, LAG, LEAD)
- Разбери метрики: конверсия, retention, LTV, ARPU
- Пойми основы A/B тестирования и статзначимости
- Потренируйся на реальных задачах
- Научись объяснять свое решение
Совет: Даже если не знаешь точное решение - покажи ход мысли. Работодатели ценят логику и умение рассуждать больше, чем идеальный код.
Частые ошибки
- Не читать условие - пропускают важные детали
- Не проверять результат - не валидируют данные
- Overengineering - слишком сложное решение простой задачи
- Не комментировать код - код без объяснений
- Игнорировать edge cases - NULL, пустые значения