SQL練習(xí)之打卡記錄數(shù)據(jù)統(tǒng)計(jì)類問題

最近老婆的公司天通,關(guān)閉了OA系統(tǒng)中莫瞬,各類打卡時(shí)間數(shù)據(jù)統(tǒng)計(jì)的功能雄卷,為了不麻煩老婆手算搓蚪,就做了一個(gè)簡單的打卡系統(tǒng),方便自動(dòng)統(tǒng)計(jì)老婆想要知道的各類數(shù)據(jù)丁鹉。

做的過程中就遇到了幾個(gè)還挺有意思的SQL妒潭,這里寫成一篇博文,方便后期練習(xí)~

Tip:需要答案的盆友可以訪問 參考答案的鏈接揣钦,密碼是123456~

建表語句

drop table if exists fx67ll_punch_log;
create table fx67ll_punch_log (
  punch_id             bigint(20)      not null auto_increment    comment '打卡記錄主鍵',
  punch_type           char(1)                                    comment '打卡類型(1代表上班 2代表下班)',
  punch_remark         varchar(1023)   default ''                 comment '打卡記錄備注',
  del_flag             char(1)         default '0'                comment '刪除標(biāo)志(0代表存在 2代表刪除)',
  user_id              bigint(20)                                 comment '用戶ID',
  create_by            varchar(64)     default ''                 comment '記錄創(chuàng)建者',
  create_time          datetime                                   comment '記錄創(chuàng)建時(shí)間',
  update_by            varchar(64)     default ''                 comment '記錄更新者',
  update_time          datetime                                   comment '記錄更新時(shí)間',
  primary key (punch_id)
) engine=innodb auto_increment=1 comment = '打卡記錄表';

插入測試數(shù)據(jù)

INSERT INTO `ruoyi-mysql`.fx67ll_punch_log (punch_type,punch_remark,del_flag,user_id,create_by,create_time,update_by,update_time) VALUES
     ('1','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-06 00:00:00'),
     ('2','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-06 21:00:00'),
     ('1','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-08 15:00:00'),
     ('2','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-08 18:19:00'),
     ('2','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-08 21:00:00'),
     ('1','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-10 20:50:00'),
     ('2','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-10 21:44:00'),
     ('2','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-10 22:50:00'),
     ('1','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-11 10:00:00'),
     ('2','','0',1,'fx67ll','2023-12-12 19:49:41','fx67ll','2023-12-11 20:00:00'),
     ('1','','0',101,'user','2023-12-13 17:03:22','user','2023-12-13 00:06:00'),
     ('2','e?e?e','0',101,'user','2023-12-13 17:03:14','user','2023-12-11 01:01:00'),
     ('1','123','0',1,'fx67ll','2023-12-14 09:53:54','fx67ll','2023-12-14 09:53:50'),
     ('2','','0',101,'user','2024-03-13 17:49:16','user','2024-03-13 17:49:00'),
     ('1','324','0',101,'user','2024-03-21 11:22:16','user','2024-03-21 11:22:17'),
     ('2','','0',101,'user','2024-03-21 11:22:43','user','2024-03-21 22:22:39'),
     ('2','','0',1,'fx67ll','2024-03-30 20:01:10','fx67ll','2024-03-30 20:01:00'),
     ('1','','0',1,'fx67ll','2024-04-30 15:01:16','fx67ll','2024-04-30 00:01:06'),
     ('2','','0',1,'fx67ll','2024-04-30 15:01:25','fx67ll','2024-04-30 23:01:16'),
     ('1','','0',1,'fx67ll','2024-04-30 15:01:31','fx67ll','2024-04-24 15:01:25'),
     ('1','','0',101,'user','2024-05-03 02:39:33','user','2024-05-03 02:39:29'),
     ('1','','0',101,'user','2024-05-03 02:39:41','user','2024-05-04 00:39:33'),
     ('2','123','0',101,'user','2024-05-03 02:39:52','user','2024-05-04 23:39:41');

問題一:統(tǒng)計(jì)每個(gè)用戶每個(gè)月的工作總時(shí)長雳灾、總打卡天數(shù)、有效打卡天數(shù)以及日均工時(shí)

需要得到如下的統(tǒng)計(jì)數(shù)據(jù)冯凹,每個(gè)字段的含義分別是:

  1. punch_user:打卡的用戶
  2. punch_month:本條記錄統(tǒng)計(jì)的打卡月份
  3. total_work_hours:當(dāng)月的工作總時(shí)長谎亩,小時(shí)為單位
  4. total_work_minutes:當(dāng)月的工作總時(shí)長,分鐘為單位
  5. total_work_seconds:當(dāng)月的工作總時(shí)長谈竿,秒為單位
  6. total_punch_days:當(dāng)月的總打卡天數(shù),只要有打卡記錄就算摸吠,可能只打了上班卡空凸,或者只打了下班卡,但是寸痢,沒有打卡記錄的天數(shù)則不算
  7. total_work_days:當(dāng)月的有效打卡天數(shù)呀洲,必須滿足條件,既有上班打卡記錄啼止,又有下班打卡記錄道逗,才算一個(gè)有效打卡天數(shù)
  8. work_hours_per_day:當(dāng)月的日均工時(shí),小時(shí)為單位
punch_user|punch_month|total_work_hours|total_work_minutes|total_work_seconds|total_punch_days|total_work_days|work_hours_per_day|
----------+-----------+----------------+------------------+------------------+----------------+---------------+------------------+
fx67ll    |2023-12    |         39.0000|              2340|            140400|               5|              4|        9.75000000|
fx67ll    |2024-03    |                |                  |                  |               1|              0|                  |
fx67ll    |2024-04    |         23.0028|              1380|             82810|               2|              1|       23.00277778|
user      |2023-12    |                |                  |                  |               2|              0|                  |
user      |2024-03    |         11.0061|               660|             39622|               2|              1|       11.00611111|
user      |2024-05    |         23.0022|              1380|             82808|               2|              1|       23.00222222|

問題二:統(tǒng)計(jì)每個(gè)用戶當(dāng)月的只打了一次卡的缺卡記錄

需要得到如下的統(tǒng)計(jì)數(shù)據(jù)献烦,每個(gè)字段的含義分別是:

  1. punch_user:缺卡的用戶
  2. punch_month:本條記錄的缺卡月份
  3. punch_day:本條記錄的缺卡日期
  4. lost_punch_type:本條記錄的缺卡類型滓窍,需要輸出是上班缺卡還是下班缺卡
punch_user|punch_month|punch_day |lost_punch_type|
----------+-----------+----------+---------------+
fx67ll    |2023-12    |2023-12-14|下班缺卡           |
fx67ll    |2024-03    |2024-03-30|上班缺卡           |
fx67ll    |2024-04    |2024-04-24|下班缺卡           |
user      |2023-12    |2023-12-11|上班缺卡           |
user      |2023-12    |2023-12-13|下班缺卡           |
user      |2024-03    |2024-03-13|上班缺卡           |
user      |2024-05    |2024-05-03|下班缺卡           |

我是 fx67ll.com,如果您發(fā)現(xiàn)本文有什么錯(cuò)誤巩那,歡迎在評論區(qū)討論指正吏夯,感謝您的閱讀!
如果您喜歡這篇文章即横,歡迎訪問我的 本文github倉庫地址噪生,為我點(diǎn)一顆Star,Thanks~ :)
轉(zhuǎn)發(fā)請注明參考文章地址东囚,非常感謝6逅浴!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桨嫁,一起剝皮案震驚了整個(gè)濱河市植兰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞧甩,老刑警劉巖钉跷,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肚逸,居然都是意外死亡爷辙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門朦促,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膝晾,“玉大人,你說我怎么就攤上這事务冕⊙保” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵禀忆,是天一觀的道長臊旭。 經(jīng)常有香客問我,道長箩退,這世上最難降的妖魔是什么离熏? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮戴涝,結(jié)果婚禮上滋戳,老公的妹妹穿的比我還像新娘。我一直安慰自己啥刻,他們只是感情好奸鸯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著可帽,像睡著了一般娄涩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上映跟,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天钝满,我揣著相機(jī)與錄音,去河邊找鬼申窘。 笑死弯蚜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剃法。 我是一名探鬼主播碎捺,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了收厨?” 一聲冷哼從身側(cè)響起晋柱,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诵叁,沒想到半個(gè)月后雁竞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拧额,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年碑诉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侥锦。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡进栽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恭垦,到底是詐尸還是另有隱情快毛,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布番挺,位于F島的核電站唠帝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏玄柏。R本人自食惡果不足惜襟衰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望禁荸。 院中可真熱鬧右蒲,春花似錦阀湿、人聲如沸赶熟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽映砖。三九已至,卻和暖如春灾挨,著一層夾襖步出監(jiān)牢的瞬間邑退,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工劳澄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留地技,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓秒拔,卻偏偏與公主長得像莫矗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容