Я использую воспламенитель кода и таблицу посещаемости, как показано ниже:
attendance ID timestamp student_id status
1 01-01-20 1 P
2 01-01-20 2 P
3 02-01-20 1 P
4 02-01-20 2 A
5 03-01-20 1 P
6 03-01-20 2 A
7 04-01-20 1 H
8 04-01-20 2 H
9 05-01-20 1 P
10 05-01-20 2 A
Моя цель - получить идентификатор студента, который отсутствует в течение 3 последовательных дней в течение последнего 1 месяца с сегодняшнего дня, исключая праздничные дни в середине, как в приведенной выше таблице, идентификатор студента 2 должен быть тем, у которого 3 последовательных отсутствия, исключая выходные 4 января.
Я использую Apache / 2.4.23 (Win32) OpenSSL / 1.0. 2 часа PHP / 5.6.28 с mysql. Я смог получить три отсутствующих подряд, но когда в середине праздника, я не могу найти там работу. Вот мой существующий код:
SELECT *,
CASE
WHEN (@studentID = student_id) THEN @absentRun := IF(status = A, 0, @absentRun + 1)
WHEN (@studentID := student_id) THEN @absentRun := IF(status = A, @absentRun + 1, 0)
END AS absentRun
FROM attendance
Where timestamp BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE() AND year='2019-2020'
ORDER BY student_id, timestamp;
Я был бы очень признателен за быстрый ответ от кого-то, кто поможет мне в этом. Я действительно надеюсь найти решение, так как я впервые написал здесь о помощи. Заранее спасибо.