Задача: Вывести клиентов, у которых средняя сумма платежей больше 2000р.

Для решения задачи нужно сгруппировать платежи по клиентам, вычислить среднюю сумму платежа для каждого клиента и отфильтровать тех, у кого среднее больше 2000.

Короткий ответ

Что ответить на собеседовании

Для решения задачи нужно сгруппировать платежи по клиентам, вычислить среднюю сумму платежа для каждого клиента и отфильтровать тех, у кого среднее больше 2000.

Подробный разбор

Ответ с пояснениями

Условие

Задача: Вывести клиентов, у которых средняя сумма платежей больше 2000р. В выводе должно быть:

  • client_id
  • средняя сумма платежа

Таблица "t_account":

id | client_id | open_dt | close_dt 1 | 10 | [phone] | null 2 | 11 | [phone] | null 3 | 12 | [phone] | [phone]

Таблица "t_payments":

id | account_id | amount | success_flg | payment_date 100 | 1 | 5000 | Y | [phone] | 2 | 1100 | Y | [phone] | 1 | 1000 | Y | [phone] | 2 | 9000 | N | [phone] | 3 | 1200 | Y | [phone]

Ответ

Для решения задачи нужно сгруппировать платежи по клиентам, вычислить среднюю сумму платежа для каждого клиента и отфильтровать тех, у кого среднее больше 2000.

Пример SQL-запроса:

SELECT client_id
FROM payments
GROUP BY client_id
HAVING AVG(amount) > 2000;

Здесь:

  • payments — таблица с платежами, где есть поля client_id и amount.
  • GROUP BY client_id группирует записи по клиентам.
  • HAVING AVG(amount) > 2000 фильтрует группы, у которых средняя сумма платежа больше 2000.

Если нужно вывести не только ID, но и другие данные клиента, можно сделать JOIN с таблицей клиентов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее