【发布时间】:2020-01-24 13:17:41
【问题描述】:
我正在使用如下代码点火器和考勤表:
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
我的目标是获取从今天开始的最后1个月内连续缺勤3天的学生证,不包括上表中的假期,学生证2应该是连续3天的学生证1 月 4 日假期除外。
我正在使用 Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.6.28 和 mysql。我已经可以连续3次缺席,但是中间有假期,我找不到工作。这是我现有的代码:
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;
我真的很感谢有人能快速回答我的问题。我真的很希望有一个解决方案,因为我第一次在这里发帖寻求帮助。提前致谢。
【问题讨论】:
-
有趣的是,学生 2 在同一天在场、缺席和度假,而在同一天,学生 1 在场并在度假。有量子学生吗?
标签: mysql sql codeigniter mariadb gaps-and-islands