Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连续缺勤_Mysql_Sql - Fatal编程技术网

Mysql 连续缺勤

Mysql 连续缺勤,mysql,sql,Mysql,Sql,我有一个MySql表,包含empno和timeindate列。我无法获取连续3天缺勤的员工的数据: 以下是我的示例数据: ========== empno: | timeindate empno 1 | 2013-10-01 00:00:00 empno 2 | 2013-10-01 00:00:00 empno 1 | 2013-10-02 00:00:00 empno 2 | 2013-10-02 00:00:00 empno 2 | 2013-10-

我有一个MySql表,包含empno和timeindate列。我无法获取连续3天缺勤的员工的数据:

以下是我的示例数据:

==========
empno:     | timeindate

empno 1    | 2013-10-01 00:00:00
empno 2    | 2013-10-01 00:00:00
empno 1    | 2013-10-02 00:00:00
empno 2    | 2013-10-02 00:00:00
empno 2    | 2013-10-03 00:00:00
empno 2    | 2013-10-04 00:00:00
empno 2    | 2013-10-05 00:00:00
empno 1    | 2013-10-06 00:00:00
empno 2    | 2013-10-06 00:00:00
----------

请帮忙,我已经读了好几篇文章,但是没有给我需要的数据,我只是感到困惑。非常感谢您的回答。

我想试试这样的

WITH T AS
(SELECT empno, dateintime, @row:=@row+1 rownum FROM
attendance JOIN (SELECT @row:=0) init
ORDER BY empno, timeindate)

SELECT DISTINCT t1.empno
FROM T AS t1 INNER JOIN T AS t2
ON t1.empno = t2.empno AND t1.rownum = t2.rownum + 1
WHERE TIMESTAMPDIFF(DAY, t2.dateintime, t1.dateintime) >= 3
第一个查询按日期时间对表排序并枚举行。然后,您将其自身连接起来,通过行数的移位,在一行中获取邻居的日期时间。然后,您只需查找具有所需差异的条目

我不确定它是否有效,但它应该是这样工作的:第一个查询:

empno:     | timeindate          | row

empno 1    | 2013-10-01 00:00:00 | 0
empno 1    | 2013-10-02 00:00:00 | 1
empno 1    | 2013-10-06 00:00:00 | 2
empno 2    | 2013-10-01 00:00:00 | 3
empno 2    | 2013-10-02 00:00:00 | 4
empno 2    | 2013-10-03 00:00:00 | 5
empno 2    | 2013-10-04 00:00:00 | 6
empno 2    | 2013-10-05 00:00:00 | 7
empno 2    | 2013-10-06 00:00:00 | 8
不带WHERE子句的第二个查询:


如您所见,WHERE将从该结果中筛选第二行。

您的表做什么???我的表使用ApplicationTanks插入/记录员工的工作时间以进行回复,很抱歉回复太晚。从你的剧本中得到了一个想法并做了一些调整。收到我需要的报告了。谢谢
empno 1    | 2013-10-02 00:00:00 | 2013-10-02 00:00:00
empno 1    | 2013-10-02 00:00:00 | 2013-10-06 00:00:00
empno 2    | 2013-10-01 00:00:00 | 2013-10-02 00:00:00
empno 2    | 2013-10-02 00:00:00 | 2013-10-03 00:00:00
etc.