**Данные:** Две таблицы финтех-компании — `monthly_revenue` (месячная выручка) и `annual_targets` (годовые планы):
[см. код в задании]
**Задание:** Напишите запрос, который для каждого месяца текущего года покажет:
1. Выручку за месяц
2. Кумулятивную (нарастающую) выручку с начала года
3. Годовой план
4. Процент выполнения плана нарастающим итогом
5. Ожидаемый процент (при равномерном распределении на текущий месяц)
6. Отклонение факта от ожидания (опережение/отставание)
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE monthly_revenue (
year_month DATE NOT NULL, -- первое число месяца
revenue NUMERIC(14,2) NOT NULL,
PRIMARY KEY (year_month)
);
CREATE TABLE annual_targets (
year INT PRIMARY KEY,
target_revenue NUMERIC(14,2) NOT NULL
);
SUM OVER кумулятивная сумма нарастающий итог план-факт
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: SUM OVER, кумулятивная сумма, нарастающий итог, план-факт.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания