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

92. Сколько водителей ушло после третьей отмены

Средняя

В rides — заказы, которые водители приняли: status = completed или cancelled_by_driver.

Продукт проверяет гипотезу: после третьей отмены водитель часто уходит. Возьмите водителей, у которых отмен не меньше трёх. Водитель «ушёл», если после момента его третьей отмены у него нет ни одной завершённой поездки.

Верните одну строку: drivers — сколько водителей с тремя и более отменами, gone_drivers — сколько из них ушли, gone_pct — доля в процентах с одним знаком. Если таких водителей нет, доля пустая (NULL).

Третья отмена — третья по времени; при равном времени раньше идёт меньший ride_id.

В работе: Проверка гипотезы перед изменением правил штрафов за отмены.

Таблицы

rides — заказы, принятые водителями

КолонкаТипЧто значит
ride_idintключ
driver_idintводитель
statustextcompleted / cancelled_by_driver
created_attimestampвремя заказа

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

rides · 11 строк

ride_iddriver_idstatuscreated_at
1501completed2026-03-01T08:00:00
2501cancelled_by_driver2026-03-01T09:00:00
3501cancelled_by_driver2026-03-02T09:00:00
4501cancelled_by_driver2026-03-03T09:00:00
5502cancelled_by_driver2026-03-01T10:00:00
6502cancelled_by_driver2026-03-01T11:00:00
7502cancelled_by_driver2026-03-01T12:00:00
8502completed2026-03-01T13:00:00
9503cancelled_by_driver2026-03-04T07:00:00
10503cancelled_by_driver2026-03-04T07:30:00
11503completed2026-03-05T07:00:00

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

driversgone_driversgone_pct
2150
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк не важен.
drivers, gone_drivers, gone_pct
оконные функцииантиджойнусловная агрегацияNULL

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

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