Для решения задачи нужно сгруппировать платежи по клиентам, вычислить среднюю сумму платежа для каждого клиента и отфильтровать тех, у кого среднее больше 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 с таблицей клиентов.