В tariff_history — каждая установка тарифа абоненту (первое подключение тоже). Цены — в справочнике tariffs (fee_rub — абонентская плата в месяц).
Найдите смены тарифа, совершённые в 2025 году, где новая плата меньше прежней. Прежний тариф — предыдущая запись абонента по времени, даже если она была в 2024 году. Переход за ту же цену понижением не считается.
Верните msisdn, changed_at, old_tariff, new_tariff, fee_diff_rub (прежняя плата минус новая). Порядок — по changed_at, затем msisdn.
В работе: Сигнал оттока: абонент, который снижает тариф, часто через пару месяцев уходит к другому оператору.
Таблицы
tariffs — справочник тарифов
| Колонка | Тип | Что значит |
|---|---|---|
tariff_id | int | ключ |
name | text | название |
fee_rub | numeric | абонентская плата, ₽/мес |
tariff_history — установки тарифа
| Колонка | Тип | Что значит |
|---|---|---|
msisdn | text | номер |
tariff_id | int | тариф |
changed_at | timestamp | время установки |
Пример: данные
tariffs · 4 строки
| tariff_id | name | fee_rub |
|---|---|---|
| 1 | Базовый | 450 |
| 2 | Безлимит | 900 |
| 3 | Семейный | 1200 |
| 4 | Для своих | 650 |
tariff_history · 5 строк
| msisdn | tariff_id | changed_at |
|---|---|---|
| 79161234567 | 2 | 2025-01-15T10:00:00 |
| 79161234567 | 3 | 2025-04-01T12:00:00 |
| 79161234567 | 1 | 2025-09-20T18:30:00 |
| 79037770011 | 1 | 2025-02-01T09:00:00 |
| 79037770011 | 2 | 2025-03-01T09:00:00 |
Ожидаемый ответ
| msisdn | changed_at | old_tariff | new_tariff | fee_diff_rub |
|---|---|---|---|---|
| 79161234567 | 2025-09-20T18:30:00 | Семейный | Базовый | 750 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
msisdn, changed_at, old_tariff, new_tariff, fee_diff_rub
Источник: на данных абонентской базы: история смены тарифов. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.