Простой банкомата фиксируют две системы: мониторинг купюроприёмника и мониторинг связи. Каждая пишет свои инциденты в atm_outages, поэтому интервалы одного банкомата могут перекрываться или лежать один внутри другого. Инцидент длится с started_at до ended_at.
Посчитайте для каждого банкомата, сколько минут в октябре 2026 года он был недоступен хотя бы по одной причине: время, когда открыты два инцидента сразу, учитывается один раз. Инциденты, начавшиеся в сентябре или закончившиеся в ноябре, обрежьте по границам октября. Верните atm_id, downtime_min (целое), только банкоматы с простоем в октябре. Порядок — по atm_id.
В работе: SLA с инкассаторской службой: штраф считается по реальному времени простоя, а не по числу инцидентов.
Таблицы
atm_outages — одна строка — один инцидент из любой системы
| Колонка | Тип | Что значит |
|---|---|---|
outage_id | int | ключ |
atm_id | int | банкомат |
source | text | cash / network |
started_at | timestamp | начало |
ended_at | timestamp | конец |
Пример: данные
atm_outages · 4 строки
| outage_id | atm_id | source | started_at | ended_at |
|---|---|---|---|---|
| 1 | 3001 | cash | 2026-10-05T10:00:00 | 2026-10-05T12:00:00 |
| 2 | 3001 | network | 2026-10-05T11:30:00 | 2026-10-05T13:00:00 |
| 3 | 3001 | network | 2026-10-07T09:00:00 | 2026-10-07T09:45:00 |
| 4 | 3002 | cash | 2026-10-10T14:00:00 | 2026-10-10T14:20:00 |
Ожидаемый ответ
| atm_id | downtime_min |
|---|---|
| 3001 | 225 |
| 3002 | 20 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
atm_id, downtime_min
Источник: наша задача на данных Сбера: инциденты мониторинга банкоматов. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.