РЕДАКТИРОВАТЬ: Он захватывает все рабочие часы независимо от кода оплаты для этого рабочего дня !! Как выбрать только '01 обычный ',' 02 overtime 1.5 ',' 03 overtime 2.0 '? Это заявление IF не работает?Операция MYSQL, не создающая точных результатов (SUM, IF и CASE)
Смотрите здесь фото источник данных:
Это странно !!!! Я пытаюсь сделать полный эквивалентный подсчет голосов! Мой оператор SQL корректно выводит результат для одной строки, а в следующей строке это неправильно! Обе линии производятся из одного и того же кода !!!!
Вот мой запрос ...
SELECT Supervisor,
IFNULL(CASE WHEN DAYOFWEEK(workdate) = 3 THEN
IF(employeehours.paycode = '01 Ordinary' AND employeehours = 8,CASE WHEN
employeehours.paycode = '01 Ordinary' OR employeehours.paycode = '02 Overtime 1.5' OR
employeehours.paycode = '03 Overtime 2.0' THEN (SUM(employeehours)-0.4)/7.6 END,CASE WHEN
employeehours.paycode = '01 Ordinary' OR employeehours.paycode = '02 Overtime 1.5' OR
employeehours.paycode = '03 Overtime 2.0' THEN (SUM(employeehours)/7.6) END) END, 0)
`Tuesday`,
FROM payroll.employeedatanew_copy
JOIN payroll.employeehours ON employeedatanew_copy.`ID Number` =
employeehours.employeeid
WHERE employeehours.workdate BETWEEN '2013-12-02' AND '2013-12-07'
GROUP BY supervisor, id number
Вот результат !!!! (Exluding все дни, но вторник)
Для супервайзера 'Matt Taylor', мы имеем 2 сотрудников.
The first has:
8.00 in '01 ordinary'
1.60 in '02 overtime 1.5'
0.00 in '03 overtime 2.0'
The second has:
8.00 in '01 ordinary'
1.17 in '02 overtime 1.5'
0.00 in '03 overtime 2.0'
Если делать расчеты вручную, вы получите 1,21 для первого и 1,15 для второго ... !!! ПОЧЕМУ первый из них неправильно вычисляет тот же подход к кодированию !?
если я должен был догадаться. – Lenny
Не может быть так, как нет округления, что далеко ...? – atomapps
На самом деле я беру это обратно. Это не имеет смысла. Я бы сказал, что нужно дважды проверить эти операторы IF, какие из (если они есть) операторов if применимы только к неправильному результату. Бьюсь об заклад, это простая опечатка и часть математики, которая, случается, не относится к одному из двух результатов. – Lenny