【发布时间】:2014-02-03 14:08:20
【问题描述】:
我有下表:
studentid VARCHAR(12)
latetime DATETIME
attendance CHAR(1)
latetime 只有工作日。
有些日子学生会有“家长信”用V表示出勤栏。
我需要将这些出勤列 V 按连续的工作日分组。 然后计算这些出现次数。 每组连续天数计为1个字母。
我的 SQLFIDDLE:http://sqlfiddle.com/#!2/55d5b/1
此 SQLFIDDLE 示例数据应返回
STUDENTID LETTERCOUNT
a1111 3
b2222 2
a1111 - 3 counts
-----
1. 2014-01-02
2. 2014-01-27
2. 2014-01-29 and 2014-01-30
b2222 - 2 counts
-----
1. 2014-01-02 and 2014-01-03
2. 2014-01-24, 2014-01-27 and 2014-01-28
我尝试了以下 SO 中的各种方法,但没有任何正确的结果:
How to GROUP BY consecutive data (date in this case)
MySQL: group by consecutive days and count groups
我可以通过循环遍历结果并手动检查每条记录及其下一个日期,以编程方式在 PHP 中执行此操作。但我试图用 SQL 来达到同样的效果。
我们将不胜感激任何帮助/寻找解决方案的方向。
【问题讨论】:
-
你认为你的数据集能恰当地代表手头的问题吗?
-
我认为“工作日”是不够的,因为它没有考虑到节假日。您有预计出勤天数的日历吗?
-
这是一组简化的数据,其中不必要的数据和列已被删除。
-
我可以创建另一个具有预期出勤天数的表。目前假期在 PHP 代码中被过滤。