在MySQL中统计员工迟到的次数


需求

  有一张表(tb_check_sign)里面有一些员工,上班在九点,九点以后算迟到,统计每一个迟到的次数,如下表所示:

name desctript signs
王五 研发部 2021-01-12 08:45:23
王五 研发部 2021-01-12 08:50:43
王五 研发部 2021-01-12 09:10:45
李四 研发部 2021-01-12 09:01:29
李四 研发部 2021-01-12 09:49:40
李四 研发部 2021-01-12 08:47:25
赵六 研发部 2021-01-12 09:25:45
赵六 研发部 2021-01-12 10:15:36
赵六 研发部 2021-01-12 08:43:24
王琦 研发部 2021-01-12 08:26:39
王琦 研发部 2021-01-12 08:30:10
王琦 研发部 2021-01-12 08:34:23
Tip:name是员工;descript部门;signs是打卡时间(DateTime类型)

问题即解决方案

  获取某一个时间点的员工迟到的数据:

SELECT COUNT(1) FROM tb_check_sign WHERE signs LINK "% 09:00:00"

  获取每一个员工的迟到数量:

SELECT COUNT(1) FROM tb_check_sign WHERE name = "王五" AND DATE_FORMAT(signs, "%H:%i:%S") > "09:00:00";
SELECT COUNT(1) FROM tb_check_sign WHERE name = "李四" AND DATE_FORMAT(signs, "%H:%i:%S") > "09:00:00";
SELECT COUNT(1) FROM tb_check_sign WHERE name = "赵六" AND DATE_FORMAT(signs, "%H:%i:%S") > "09:00:00";
SELECT COUNT(1) FROM tb_check_sign WHERE name = "王琦" AND DATE_FORMAT(signs, "%H:%i:%S") > "09:00:00";

  通过日期查询大于2021-01-01的数据

SELECT name, signs FROM tb_check_sign WHERE signs > "2021-01-01";

  查询9点这一段时间的数据

SELECT name, signs FROM tb_check_sign WHERE signs LIKE "2021-01-12 09%";

知识点分析

  • DATETIME
      是一个日期和时间组合的日期类型,除了它,还有DATE和TIMESTAMP的日期类型,它的格式为"YYYY-MM-DD HH:MM:SS",取值范围在”1000-01-01 00:00:00“至”9999-12-31 23:59:59“

  • DATE_FORMAT()
      DATE_FORMAT(data, format)是一个把时间格式化的函数,例如以上案例:
    “DATE_FORMAT(signs, "%H:%i:%S")> '09:00:00'"把格式化的时间与九点作比较,大于则为真,统计数据

  • LIKE
      是用来检测一个字符串是否包含或不包含,它提供了两个通配符。即"%"与"_","%"表示匹配零个或多个字符,而”_“表示匹配任何单个字符。如以上案例中:
    "LIKE '% 09:00:00'"表示匹配九点的所有数据

  • COUNT(*)与COUNT(1)
      两者都是表达查询符合条件的数据表中的行数,执行的时间相差不大

参考文献

[1] https://blog.csdn.net/qq_14861089/article/details/53182887
[2] https://blog.csdn.net/ZHOU_VIP/article/details/101778505
[3] https://www.begtut.com/mysql/mysql-datetime.html
[4] https://www.cnblogs.com/yangchunze/p/6669523.html
[5] https://www.begtut.com/mysql/mysql-like.html
[6] https://www.cnblogs.com/hider/p/11726690.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM