**Контекст:** Телеком-оператор хочет понять распределение абонентов по тарифным планам и уровням ежемесячных расходов для планирования маркетинговых кампаний.
**Данные:**
[см. код в задании]
**Задание:**
1. Для каждого тарифного плана и бакета расходов (до 500₽, 500–1000₽, 1000–2000₽, свыше 2000₽) посчитайте количество активных абонентов
2. Используйте данные за последний полный месяц
3. Выведите: тарифный план, бакет расходов, количество абонентов и средний `total_charge`
4. Отсортируйте по плану и бакету
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE subscribers (
id SERIAL PRIMARY KEY,
phone_number VARCHAR(20) NOT NULL,
plan_name VARCHAR(100) NOT NULL, -- 'Старт', 'Оптимум', 'Премиум', 'Безлимит'
activated_at TIMESTAMP NOT NULL,
is_active BOOLEAN DEFAULT TRUE
);
CREATE TABLE monthly_charges (
id SERIAL PRIMARY KEY,
subscriber_id INT REFERENCES subscribers(id),
billing_month DATE NOT NULL, -- первое число месяца
base_charge NUMERIC(10,2) NOT NULL, -- абонентская плата
extra_charge NUMERIC(10,2) DEFAULT 0, -- сверх тарифа (доп. трафик, роуминг)
total_charge NUMERIC(10,2) NOT NULL -- итого
);
CASE WHEN GROUP BY бакеты распределение
Это задание для уровня Junior. Подходит для начинающих аналитиков, проверяет базовые знания SQL/Python/статистики.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: CASE WHEN, GROUP BY, бакеты, распределение.
На реальном собеседовании на подобную задачу отводится 5-10 минут — проверяется скорость и базовая грамотность. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания