SELECT employee.firstname, SUM(salary.amount) AS Total
FROM salary
JOIN employee
ON employee.idemployee=salary.idemployee
WHERE salary.dateadded BETWEEN "2019-01-01" AND "2019-04-01"
GROUP BY employee.firstname
ORDER BY 2 DESC
LIMIT 1
Вы фильтруете по нужному диапазону, затем суммируете суммы в этом диапазоне, группируя по сотруднику. Если вы заказываете на эту сумму и получаете только первый ряд, он должен соответствовать тому, что вы ищете.
Еще лучше, если ваши сотрудники просто имеют имя в атрибуте имени, у вас есть риск ошибочно сгруппировать по одному имени. Итак, чтобы лучше определить сотрудника, я бы добавил idemployee
к предложению group by
. Как это:
SELECT employee.idemployee, employee.firstname, SUM(salary.amount) AS Total
FROM salary
JOIN employee
ON employee.idemployee=salary.idemployee
WHERE salary.dateadded BETWEEN "2019-01-01" AND "2019-04-01"
GROUP BY employee.idemployee,employee.firstname
ORDER BY 3 DESC
LIMIT 1