Войти Регистрация
Data base

206. Номера, где все звонки короче 10 секунд

Лёгкая

В calls — исходящие звонки абонентов. Если звонок не соединился, duration_sec — NULL.

Найдите номера msisdn, у которых в марте 2026 был хотя бы один соединённый звонок и каждый соединённый звонок длился не дольше 10 секунд. Несоединённые звонки не учитывайте ни в одну сторону. Порядок — по msisdn.

В работе: Антифрод: SIM-карты в модемах-прозвонщиках дают короткие звонки и не говорят дольше нескольких секунд.

Таблицы

calls — одна строка — один исходящий звонок

КолонкаТипЧто значит
call_idintключ
msisdntextномер абонента
started_attimestampначало звонка
duration_secintдлительность, NULL — не соединился

Пример: данные

calls · 6 строк

call_idmsisdnstarted_atduration_sec
1791612345012026-03-02T10:00:004
2791612345012026-03-02T10:01:007
3791612345012026-03-02T10:02:00NULL
4791612345022026-03-03T12:00:006
5791612345022026-03-03T18:30:00184
6791612345032026-03-05T09:15:0010

Ожидаемый ответ

msisdn
79161234501
79161234503
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
msisdn
GROUP BYHAVINGNULLдаты

Источник: наша задача на данных МТС: длительность исходящих звонков. Условие пересказано своими словами.