题目
随便找一段考勤数据,考勤资料都是有进有出的
早上08:55上班,晚上18:00下班,除去中午12:00到下午13:30为中休外,其他时间段只有累计10分钟可以出去,否则会产能考勤警告。
思路分析
进出时间的相减可以得到两个时间段的时间差,一天内所有进出时间差值的总和约定时间相差10分钟以内。但是,由于要算考勤警告,我们这里只要算正常工作时间内的时间即可。
解题
使用数据库:mysql
第一步创建数据原表:
DROP TABLE IF EXISTS attendance_warning_tb;
CREATE TABLE IF NOT EXISTS attendance_warning_tb (
id VARCHAR(20) COMMENT '员工id',
date_time DATETIME COMMENT '打卡记录',
out_in_flag VARCHAR(20) COMMENT '进出'
);
使用excel自带函数将数据整合成插入语句sql
CONCATENATE(“insert into attendance_warning_tb values (’”&A1&"’ , ‘"&B1&"’ , ‘"&C1&"’)")
结果:
INSERT INTO attendance_warning_tb VALUES
('001' , '2022-01-26 08:42:00' , 'in')
,('001' , '2022-01-26 11:52:52' , 'out')
,('001' , '2022-01-26 12:12:23' , 'in')
,('001' , '2022-01-26 18:22:54' , 'out')
,('001' , '2022-01-25 08:50:33' , 'in')
,('001' , '2022-01-25 11:52:03' , 'out')
,('001' , '2022-01-25 12:23:22' , 'in')
,('001' , '2022-01-25 18:15:36' , 'out')
,('001' , '2022-01-24 08:50:33' , 'in')
,('001' , '2022-01-24 11:52:03' , 'out')
,('001' , '2022-01-24 12:23:22' , 'in')
,('001' , '2022-01-24 18:15:36' , 'out')
,('001' , '2022-01-22 11:25:33' , 'in')
,('001' , '2022-01-22 18:37:35' , 'out')
,('001' , '2022-01-21 08:45:36' , 'in')
,('001' , '2022