Я создал таблицу (Посещаемость) для хранения вычислений, и я обновляю таблицу, чтобы заполнить большинство вычислений. Мне нужно выяснить, когда работник (EMP_NB) оставил работу в течение дня. Это рассчитывается по TIMEDIFF(ADDTIME(PERIOD, '1:00'), SEC_TO_TIME(Activity_Secs))
.Обновление таблицы с вычислением на основе MAX из другой таблицы
Моя проблема заключается в том, что я не могу понять способ захватить МАКСИМАЛЬНЫЙ ПЕРИОД за EMP_NB за DATE, а также захватить соответствующие Activity_Secs.
TABLEA
╭────────┬──────┬────────┬───────────────╮ │ EMP_NB │ DATE │ Period │ Activity_Secs │ ╰────────┴──────┴────────┴───────────────╯
Вот код MySQL я сделал, чтобы получить первый период работник авторизованы.
UPDATE calc_Attendance AS att, tableA AS a
JOIN (
SELECT
EMP_NB,
DATE,
Period,
Activity_Secs
FROM tableA
GROUP BY EMP_NB, DATE, Period
) m
ON a.EMP_NB = m.EMP_NB and a.DATE = m.DATE and a.Period = m.Period
SET DEPTARTURE_ACTUAL = TIMEDIFF(ADDTIME(m.Period, '1:00'), SEC_TO_TIME(m.Activity_Secs))
WHERE att.EMP_NB = m.EMP_NB AND att.DATE = m.DATE
;
Любая помощь будет оценена. У меня нет большого опыта работы с SQL, так что это сводит меня с ума.
Вы не группируете Activity_Secs в ur-запросе. Вы хотите взять максимальное значение этого col? – Teja
Мне нужен Activity_Secs, который находится в той же строке, что и MAX (PERIOD) за EMP_NB за DATE. – MikeKusold
Попробуйте тот, который я только что опубликовал ... – Teja