В events — действия покупателей с объявлениями: view (открыл карточку), contact (написал или позвонил), deal (оформил покупку с доставкой). Логирование иногда пишет одно событие дважды.
Воронку считаем по парам «покупатель — объявление». Пара прошла шаг view, если есть просмотр; шаг contact — если есть контакт не раньше первого просмотра; шаг deal — если есть сделка не раньше первого такого контакта.
Верните три строки в порядке шагов view, contact, deal: step, pairs — сколько пар дошли до шага, pct_of_prev — процент от предыдущего шага с одним знаком (у view — NULL, при нуле в предыдущем шаге — NULL).
В работе: Оценка, где теряются покупатели в сделках с доставкой.
Таблицы
events — одна строка — одно событие, возможны дубли
| Колонка | Тип | Что значит |
|---|---|---|
event_id | int | ключ |
user_id | int | покупатель |
listing_id | int | объявление |
event_type | text | view / contact / deal |
event_at | timestamp | время |
Пример: данные
events · 7 строк
| event_id | user_id | listing_id | event_type | event_at |
|---|---|---|---|---|
| 1 | 11 | 501 | view | 2026-05-01T10:00:00 |
| 2 | 11 | 501 | contact | 2026-05-01T10:03:00 |
| 3 | 11 | 501 | deal | 2026-05-01T12:00:00 |
| 4 | 12 | 501 | view | 2026-05-01T11:00:00 |
| 5 | 12 | 501 | contact | 2026-05-01T11:30:00 |
| 6 | 13 | 502 | view | 2026-05-02T09:00:00 |
| 7 | 14 | 503 | view | 2026-05-02T09:30:00 |
Ожидаемый ответ
| step | pairs | pct_of_prev |
|---|---|---|
| view | 4 | NULL |
| contact | 2 | 50 |
| deal | 1 | 50 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
step, pairs, pct_of_prev
Источник: на данных Авито: события покупателей и сделки с доставкой. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.