Сгруппируйте выплаты по сотруднику и отберите суммы больше 20 через HAVING. Для вывода сотрудников соедините агрегированные выплаты с Employee.
Получить список работников с совокупной зарплатой выше 20
Сгруппируйте выплаты по сотруднику и отберите суммы больше 20 через HAVING. Для вывода сотрудников соедините агрегированные выплаты с Employee.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Имеются две таблицы: Employee, содержащая сведения о сотрудниках, и SalaryPayments, где фиксируются ежемесячные выплаты. Составьте SQL‑запрос, который отобразит всех работников, у которых суммарные выплаты за весь период превышают 20.
Ответ
Сгруппируйте выплаты по сотруднику и отберите суммы больше 20 через HAVING. Для вывода сотрудников соедините агрегированные выплаты с Employee.
При полях Employee.id/name и SalaryPayments.employee_id/amount:
SELECT e.id, e.name, SUM(p.amount) AS total_paid
FROM Employee e
JOIN SalaryPayments p ON p.employee_id = e.id
GROUP BY e.id, e.name
HAVING SUM(p.amount) > 20;
Названия полей здесь условные: в задаче нет полного DDL. Группировка по ID не объединяет сотрудников с одинаковым именем. Запрос учитывает весь период без фильтра даты. Для разных валют нужна отдельная группировка либо согласованное преобразование, иначе сумма не имеет определённого смысла.