Выбор работников с суммарными выплатами, превышающими заданный порог

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

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

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

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

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

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

Условие

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

Ответ

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

При предполагаемых полях Person(id,name) и Payments(person_id,amount):

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

Имена ключей нужно адаптировать к схеме. Если выплаты в разных валютах, их нельзя складывать без отдельного правила пересчёта. Условие не задаёт период, поэтому запрос суммирует все строки; фильтр даты при необходимости добавляют до группировки.

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

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

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

Подробнее