**Данные:** Две таблицы телеком-компании — `sms_sent` (отправка) и `sms_delivery` (доставка):
[см. код в задании]
**Задание:** Для каждого оператора и типа сообщения за последнюю неделю рассчитайте:
1. Общее количество отправленных SMS
2. Количество доставленных (`status = 'delivered'`)
3. Процент доставки (delivery rate)
4. Среднее время доставки в секундах
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE sms_sent (
id SERIAL PRIMARY KEY,
phone_number VARCHAR(20) NOT NULL,
operator VARCHAR(50) NOT NULL, -- 'МТС', 'Билайн', 'Мегафон', 'Tele2'
message_type VARCHAR(30) NOT NULL, -- 'transactional', 'marketing', 'otp'
sent_at TIMESTAMP NOT NULL
);
CREATE TABLE sms_delivery (
sms_id INT NOT NULL REFERENCES sms_sent(id),
status VARCHAR(20) NOT NULL, -- 'delivered', 'failed', 'expired'
delivered_at TIMESTAMP
);
LEFT JOIN условная агрегация CASE WHEN проценты
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: LEFT JOIN, условная агрегация, CASE WHEN, проценты.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания