在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