Запрос на подсчет з/п сотрудников
Суть задачи: есть таблица Работников, где хранится оклад каждого сотрудника
Есть таблица Дополнительных заданий, где хранится оплата за выполнение задания.
И есть связующая таблица, где хранится id сотрудника и id работы
Мне нужно подсчитать з/п сотрудников за месяц. Проблема в том, что если человек принял участие в нескольких работах за месяц, то вычисления с ним производятся отдельно (то есть считается з/п для первой доп. работы и для второй, а не совместно).
Подскажите, пожалуйста, как это можно исправить?
Ответы (1 шт):
Автор решения: Vitaliy Zlobin
→ Ссылка
Мог где-то опечататься, но смысл такой: в подзапросе находим сумму за все доп. работы и джоиним с окладной частью.
CREATE PROCEDURE GET_TOTAL_SALARY
@LAST_DAY smalldatetime
AS
SELECT W.ID_WORKER AS "ID работника"
W.FIRST_NAME AS "Имя",
W.SECOND_NAME AS "Фамилия",
W.SALARY AS "Оклад",
SP.SUM_PAYMENT AS "Премия",
W.SALARY + SP.SUM_PAYMENT AS "Итого"
FROM Worker AS W
LEFT JOIN
(
SELECT ID_WORKER
,SUM(Payment) AS SUM_PAYMENT
FROM ExtraWork AS EW
JOIN TypeWork AS TW ON EW.FK_TypeWork = TW.ID_TypeWork
WHERE YEAR(EW.LAST_DAY) = YEAR(@LAST_DAY)
AND MONTH(EW.LAST_DAY) = MONTH(@LAST_DAY)
GROUP BY ID_WORKER
) AS SP ON W.ID_WORKER = SP.ID_WORKER




