В orders — заказы такси за неделю. status бывает completed, cancelled_by_client и cancelled_by_driver.
Для каждого города посчитайте долю отменённых заказов в процентах — неважно, кто отменил. Округлите до одного знака: city, cancel_pct.
Город, где отмен не было, тоже нужен — с нулём. Порядок: по cancel_pct от большей доли, при равенстве по city.
В работе: Еженедельный отчёт операционной команды: где отмены выросли и куда смотреть первым.
Таблицы
orders — одна строка — один заказ
| Колонка | Тип | Что значит |
|---|---|---|
order_id | int | ключ |
city | text | город |
created_at | timestamp | время заказа |
status | text | completed / cancelled_by_client / cancelled_by_driver |
Пример: данные
orders · 9 строк
| order_id | city | created_at | status |
|---|---|---|---|
| 1 | Казань | 2026-02-02T08:10:00 | completed |
| 2 | Казань | 2026-02-02T08:40:00 | cancelled_by_client |
| 3 | Казань | 2026-02-03T19:05:00 | completed |
| 4 | Самара | 2026-02-02T07:30:00 | cancelled_by_driver |
| 5 | Самара | 2026-02-02T09:00:00 | completed |
| 6 | Самара | 2026-02-04T18:20:00 | cancelled_by_client |
| 7 | Самара | 2026-02-05T22:15:00 | completed |
| 8 | Тула | 2026-02-03T12:00:00 | completed |
| 9 | Тула | 2026-02-06T13:45:00 | completed |
Ожидаемый ответ
| city | cancel_pct |
|---|---|
| Самара | 50 |
| Казань | 33,3 |
| Тула | 0 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, cancel_pct
Источник: на данных такси: заказы и отмены. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.