Задача из тестового Домклик (Сбер). В cities — города с регионом и населением, в events — работы городского хозяйства: уборка снега, вывоз мусора, ремонт дорог, с датой и затратами.
Для каждого города и типа события посчитайте, сколько было событий и сколько в среднем дней проходит между соседними событиями этого типа в этом городе. Два события в один день дают интервал 0. Пары, где событие одно, не выводите.
Названия городов повторяются: Киров есть и в Кировской, и в Калужской области — это разные города. Верните city_name, region, event_type, events, avg_gap_days (до 0,1), порядок — по этим трём первым колонкам.
В работе: Оценка регулярности городских работ для сравнения районов в сервисе недвижимости.
Таблицы
cities — справочник городов
| Колонка | Тип | Что значит |
|---|---|---|
city_id | int | ключ |
city_name | text | название |
region | text | регион |
population | int | население |
events — одна строка — одна работа в городе
| Колонка | Тип | Что значит |
|---|---|---|
event_id | int | ключ |
city_id | int | город |
event_type | text | тип работ |
event_date | date | дата |
cost_rub | numeric | затраты |
Пример: данные
cities · 3 строки
| city_id | city_name | region | population |
|---|---|---|---|
| 1 | Киров | Кировская область | 470000 |
| 2 | Киров | Калужская область | 29000 |
| 3 | Пермь | Пермский край | 1030000 |
events · 11 строк
| event_id | city_id | event_type | event_date | cost_rub |
|---|---|---|---|---|
| 1 | 1 | уборка снега | 2025-12-01 | 1800000 |
| 2 | 1 | уборка снега | 2025-12-05 | 950000 |
| 3 | 1 | уборка снега | 2025-12-15 | 1200000 |
| 4 | 1 | ремонт дорог | 2025-06-10 | 14000000 |
| 5 | 2 | уборка снега | 2025-12-03 | 120000 |
| 6 | 2 | уборка снега | 2025-12-04 | 80000 |
| 7 | 3 | уборка снега | 2025-12-02 | 3100000 |
| 8 | 3 | уборка снега | 2025-12-02 | 2900000 |
| 9 | 3 | уборка снега | 2025-12-08 | 3300000 |
| 10 | 3 | вывоз мусора | 2025-11-01 | 5400000 |
| 11 | 3 | вывоз мусора | 2025-11-11 | 5100000 |
Ожидаемый ответ
| city_name | region | event_type | events | avg_gap_days |
|---|---|---|---|---|
| Киров | Калужская область | уборка снега | 2 | 1 |
| Киров | Кировская область | уборка снега | 3 | 7 |
| Пермь | Пермский край | вывоз мусора | 2 | 10 |
| Пермь | Пермский край | уборка снега | 3 | 3 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city_name, region, event_type, events, avg_gap_days
Источник: тестовое BI-аналитика (Middle) в Домклик (Сбер), сборник No Data No Growth. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.