**Контекст:** Банк готовит email-рассылку с персонализированными офферами. Клиентов нужно разделить на 3 сегмента по сумме партнёрских покупок.
**Данные:**
[см. код в задании]
**Задание:**
1. Для каждого клиента рассчитайте суммарную стоимость партнёрских покупок за последние 90 дней
2. Разделите клиентов на сегменты:
- `no_purchases` — нет покупок за 90 дней
- `low_value` — сумма ≤ 1000 ₽
- `high_value` — сумма > 1000 ₽
3. Выведите id, email, name, total_amount и segment
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE clients (
id SERIAL PRIMARY KEY,
email VARCHAR(200) NOT NULL,
name VARCHAR(200) NOT NULL,
registered_at DATE NOT NULL
);
CREATE TABLE partner_purchases (
id SERIAL PRIMARY KEY,
client_id INT NOT NULL REFERENCES clients(id),
partner_name VARCHAR(200) NOT NULL,
amount NUMERIC(10,2) NOT NULL,
purchase_date DATE NOT NULL
);
LEFT JOIN CASE WHEN сегментация COALESCE
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: LEFT JOIN, CASE WHEN, сегментация, COALESCE.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания