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

87. Доля отменённых заказов такси по городам

Лёгкая

В orders — заказы такси за неделю. status бывает completed, cancelled_by_client и cancelled_by_driver.

Для каждого города посчитайте долю отменённых заказов в процентах — неважно, кто отменил. Округлите до одного знака: city, cancel_pct.

Город, где отмен не было, тоже нужен — с нулём. Порядок: по cancel_pct от большей доли, при равенстве по city.

В работе: Еженедельный отчёт операционной команды: где отмены выросли и куда смотреть первым.

Таблицы

orders — одна строка — один заказ

КолонкаТипЧто значит
order_idintключ
citytextгород
created_attimestampвремя заказа
statustextcompleted / cancelled_by_client / cancelled_by_driver

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

orders · 9 строк

order_idcitycreated_atstatus
1Казань2026-02-02T08:10:00completed
2Казань2026-02-02T08:40:00cancelled_by_client
3Казань2026-02-03T19:05:00completed
4Самара2026-02-02T07:30:00cancelled_by_driver
5Самара2026-02-02T09:00:00completed
6Самара2026-02-04T18:20:00cancelled_by_client
7Самара2026-02-05T22:15:00completed
8Тула2026-02-03T12:00:00completed
9Тула2026-02-06T13:45:00completed

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

citycancel_pct
Самара50
Казань33,3
Тула0
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, cancel_pct
GROUP BYусловная агрегация

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

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