В surge — средний коэффициент повышенного спроса по зоне за час. Если в зоне за час не было заказов, строки нет.
Серия — подряд идущие часы, где coef не меньше 1.5. Пропущенный час разрывает серию.
Для каждой зоны, где был хотя бы один такой час, найдите самую длинную серию: zone, streak_start — начало первого часа серии, hours — длина. При равной длине берите более раннюю. Порядок по zone.
В работе: Поиск зон, где водителей не хватает часами подряд: туда нужны бонусы за выход на линию.
Таблицы
surge — одна строка — зона и час
| Колонка | Тип | Что значит |
|---|---|---|
zone | text | зона города |
hour_start | timestamp | начало часа |
coef | numeric | коэффициент |
Пример: данные
surge · 9 строк
| zone | hour_start | coef |
|---|---|---|
| Москва-Сити | 2026-03-02T07:00:00 | 1,2 |
| Москва-Сити | 2026-03-02T08:00:00 | 1,6 |
| Москва-Сити | 2026-03-02T09:00:00 | 1,9 |
| Москва-Сити | 2026-03-02T10:00:00 | 1,4 |
| Москва-Сити | 2026-03-02T18:00:00 | 1,7 |
| Москва-Сити | 2026-03-02T19:00:00 | 2,1 |
| Москва-Сити | 2026-03-02T20:00:00 | 1,8 |
| Внуково | 2026-03-02T06:00:00 | 1,5 |
| Внуково | 2026-03-02T07:00:00 | 1,1 |
Ожидаемый ответ
| zone | streak_start | hours |
|---|---|---|
| Внуково | 2026-03-02T06:00:00 | 1 |
| Москва-Сити | 2026-03-02T18:00:00 | 3 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
zone, streak_start, hours
Источник: на данных такси: почасовой коэффициент спроса по зонам. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.