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

11. Медиана первого пополнения в Альфа-Инвестициях

Средняя

В invest_accounts — брокерские счета с городом и датой открытия, в topups — пополнения. Возьмите счета, открытые в 2025 году, и для каждого найдите первое пополнение (самое раннее по topup_at, при равенстве — меньший topup_id). Счета без пополнений не учитываются.

По каждому городу верните city, accounts — число таких счетов, и median_first_rub — медиану суммы первого пополнения, округлённую до копеек. Порядок — по city.

В работе: Подбор порога для акции «пополни от N ₽ — получи подарочную акцию»: среднее здесь тянут вверх крупные клиенты.

Таблицы

invest_accounts — брокерские счета

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

topups — пополнения счёта

КолонкаТипЧто значит
topup_idintключ
account_idintсчёт
topup_attimestampвремя
amount_rubnumericсумма, ₽

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

invest_accounts · 5 строк

account_idclient_idcityopened_on
111Москва2025-02-01
212Москва2025-03-15
313Москва2025-05-20
414Казань2025-06-01
515Казань2025-07-07

topups · 6 строк

topup_idaccount_idtopup_atamount_rub
112025-02-01T12:00:005000
212025-03-01T12:00:0050000
322025-03-16T10:00:0010000
432025-05-21T09:00:00300000
542025-06-02T18:00:001000
652025-07-08T19:00:003000

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

cityaccountsmedian_first_rub
Казань22000
Москва310000
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, accounts, median_first_rub
медианадедупликацияоконные функцииJOINGROUP BY

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

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