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

232. Средний чек пятой покупки по городам

Средняя

В clients — клиенты и город из анкеты, в purchases — их покупки по карте: сумма, время и город магазина shop_city.

Для каждого города клиента посчитайте, у скольких клиентов была пятая покупка и какой у неё средний чек. Пятая — по времени purchased_at; если две покупки прошли в одну секунду, раньше та, у которой меньше purchase_id. Город берите из анкеты, а не город магазина.

Верните city, clients, avg_fifth_rub (округлить до копеек), порядок — по city. Города, где никто не дошёл до пятой покупки, не выводите.

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

Таблицы

clients — одна строка — один клиент

КолонкаТипЧто значит
client_idintключ
full_nametextимя
citytextгород из анкеты

purchases — одна строка — одна покупка по карте

КолонкаТипЧто значит
purchase_idintключ
client_idintклиент
amount_rubnumericсумма
purchased_attimestampвремя
shop_citytextгород магазина

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

clients · 4 строки

client_idfull_namecity
1Алина ПетроваМосква
2Рамиль ХасановМосква
3Ольга ДьяченкоКазань
4Игорь СмолинКазань

purchases · 19 строк

purchase_idclient_idamount_rubpurchased_atshop_city
11112002025-02-01T10:00:00Москва
1218002025-02-03T19:20:00Москва
1314502025-02-05T08:15:00Москва
14131002025-02-09T13:00:00Москва
15125002025-02-14T21:40:00Сочи
1619002025-02-20T12:00:00Москва
2126402025-03-01T09:00:00Москва
22215002025-03-02T09:00:00Москва
23223002025-03-03T09:00:00Москва
24241002025-03-04T18:30:15Москва
25274002025-03-04T18:30:15Москва
3133502025-04-01T11:00:00Казань
3235202025-04-02T11:00:00Казань
3337802025-04-03T11:00:00Казань
34311002025-04-04T11:00:00Казань
35319902025-04-05T11:00:00Казань
41450002025-04-10T15:00:00Казань
42460002025-04-11T15:00:00Казань
43470002025-04-12T15:00:00Казань

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

cityclientsavg_fifth_rub
Казань11990
Москва24950
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, clients, avg_fifth_rub
оконные функциитоп-N в группеJOINGROUP BY

Источник: задача из тестового аналитика в Альфа-Банк, разбор IT Resume. Условие пересказано своими словами.