打卡資料可能是正常的在白天的打卡資料,也可能是下面的夜間隔天打卡資料,需要一條sql陳述句來統計
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-15 23:55:00','2020-10-15','23:55:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-15 23:53:00','2020-10-15','23:53:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-15 23:59:00','2020-10-15','23:59:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-16 23:55:00','2020-10-16','23:55:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-16 23:53:00','2020-10-16','23:53:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-16 23:59:00','2020-10-16','23:59:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-17 23:55:00','2020-10-17','23:55:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-17 23:53:00','2020-10-17','23:53:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0001','張三','2020-10-17 23:59:00','2020-10-17','23:59:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-15 23:55:00','2020-10-15','23:55:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-15 23:53:00','2020-10-15','23:53:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-15 23:59:00','2020-10-15','23:59:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-16 23:55:00','2020-10-16','23:55:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-16 23:53:00','2020-10-16','23:53:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-16 23:59:00','2020-10-16','23:59:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-17 23:55:00','2020-10-17','23:55:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-17 23:53:00','2020-10-17','23:53:00');
insert into bbb (emplsn,emplname,skdatetime,skdate,sktime) values ('0002','李四','2020-10-17 23:59:00','2020-10-17','23:59:00');
規定上班時間是“00:30”,允許提前40分鐘打卡,怎樣使用sql陳述句得到上班時間,希望得到下面的結果
工號 姓名 日期 上班時間
0001 張三 2020-10-15 null
0001 張三 2020-10-16 2020-10-15 23:53:00
0001 張三 2020-10-17 2020-10-16 23:53:00
0002 李四 2020-10-15 null
0002 李四 2020-10-16 2020-10-15 23:53:00
0002 李四 2020-10-17 2020-10-16 23:53:00
打卡日期是不固定的,1個月中可能全部打卡,也可能有一些日期沒有打卡,大部分班次是正常的白天班次,個別班次是像上面的夜間班次(起始或終止打卡時間隔天了)需要一條通用的sql陳述句來實作
uj5u.com熱心網友回復:
必須明確,什么打卡時間算允許的:比如允許的上班時間是 前一天的23:50 - 當天的 0:30
先寫個過濾條件, 滿足條件的算有效打卡時間,不滿足的為null
case when 打卡時間 between 前一天的23:50 and 當天的00:30 then 打卡時間 else null end
這個日期時間的加減你自己折騰吧。 date_add,date_sub函式
其次,可以重復打卡,那就選擇最小的
min(case when 打卡時間 between 前一天的23:50 and 當天的00:30 then 打卡時間 else null end)
加上分組條件
select id,name,打卡日期, min(case when 打卡時間 between 前一天的23:50 and 當天的00:30 then 打卡時間 else null end)
from 打卡記錄表
group by id,name
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/239280.html
標籤:MySQL
下一篇:mysql主從復制有延遲,跪求
