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

35. Пик одновременных звонков на базовой станции

Сложная

В calls — записи CDR: звонок шёл через базовую станцию station_id с started_at включительно до ended_at не включительно. Звонок, который начался ровно в момент окончания другого, с ним не пересекается.

Для каждой станции найдите peak_calls — наибольшее число звонков, шедших одновременно. Верните station_id, peak_calls; порядок — по station_id.

В работе: Планирование ёмкости сети: какие станции упираются в лимит каналов в час пик.

Таблицы

calls — одна строка — один звонок

КолонкаТипЧто значит
call_idintключ
station_idintбазовая станция
started_attimestampначало
ended_attimestampконец, не включительно

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

calls · 5 строк

call_idstation_idstarted_atended_at
15012025-12-05T18:00:002025-12-05T18:10:00
25012025-12-05T18:05:002025-12-05T18:20:00
35012025-12-05T18:07:002025-12-05T18:08:00
45012025-12-05T18:30:002025-12-05T18:31:00
55022025-12-05T18:00:002025-12-05T18:01:00

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

station_idpeak_calls
5013
5021
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
station_id, peak_calls
оконные функциинарастающий итогUNIONCTEдаты

Источник: на данных CDR: звонки и базовые станции. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.