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

17. Первый контакт в первые сутки

Средняя

Контакт — звонок или сообщение покупателя по объявлению (contacts). У одного объявления их может быть много, а может не быть совсем.

Для каждой категории верните category, listings — сколько объявлений, fast — сколько получили хотя бы один контакт не позже чем через 24 часа после published_at (ровно 24:00:00 ещё считается) и fast_pct — долю в процентах с одним знаком после запятой. Порядок — по category.

В работе: Метрика ликвидности категории: как быстро продавец получает первого покупателя.

Таблицы

listings — объявления

КолонкаТипЧто значит
listing_idintключ
categorytextкатегория
published_attimestampпубликация

contacts — звонки и сообщения

КолонкаТипЧто значит
contact_idintключ
listing_idintобъявление
buyer_idintпокупатель
kindtextcall / chat
contacted_attimestampвремя

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

listings · 5 строк

listing_idcategorypublished_at
1Квартиры2026-02-01T10:00:00
2Квартиры2026-02-01T12:00:00
3Квартиры2026-02-02T09:00:00
4Телефоны2026-02-03T19:00:00
5Телефоны2026-02-03T20:00:00

contacts · 4 строки

contact_idlisting_idbuyer_idkindcontacted_at
11901call2026-02-01T10:40:00
22902chat2026-02-03T08:00:00
34903chat2026-02-03T19:05:00
45904call2026-02-04T11:00:00

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

categorylistingsfastfast_pct
Квартиры3133,3
Телефоны22100
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
category, listings, fast, fast_pct
LEFT JOINусловная агрегациядатыNULL

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

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