Общая сумма выплат для каждого сотрудника

Соедините сотрудников с выплатами, сгруппируйте по идентификатору сотрудника и имени, затем примените HAVING SUM(amount) > 15. Группировка только по имени склеила бы однофамильцев.

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

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

Соедините сотрудников с выплатами, сгруппируйте по идентификатору сотрудника и имени, затем примените HAVING SUM(amount) > 15. Группировка только по имени склеила бы однофамильцев.

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

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

Условие

Имеются две таблицы: Person, содержащая список сотрудников, и Payment, где фиксируются ежемесячные начисления. Требуется составить запрос, который подсчитает суммарные выплаты для каждого сотрудника, отфильтрует только тех, у кого общая сумма превышает 15, и выведет имя сотрудника вместе с рассчитанной суммой.

Ответ

Соедините сотрудников с выплатами, сгруппируйте по идентификатору сотрудника и имени, затем примените HAVING SUM(amount) > 15. Группировка только по имени склеила бы однофамильцев.

Если связь задана Payment.person_id → Person.id, а сумма хранится в amount:

SELECT p.name, SUM(pay.amount) AS total_amount
FROM Person p
JOIN Payment pay ON pay.person_id = p.id
GROUP BY p.id, p.name
HAVING SUM(pay.amount) > 15;

Названия полей — явное предположение, поскольку схема в условии не приведена. INNER JOIN достаточен: сотрудники без выплат не могут пройти положительный порог. Суммировать выплаты в разных валютах без согласованного преобразования нельзя; точные денежные суммы должны храниться не в float.

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

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

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

Подробнее