本帖最后由 yaksha1 于 2020-9-11 17:29 編輯
請問下,目前正在統計每個人每天考勤數據是否正常,上班打一次卡,下班打一次卡,算是正常。打卡情況大致分兩種,一種是正常白班,朝九晚五,一種是跨天,晚上到第二天凌晨。我們有排班時間,比如
姓名? ?? ?? ? 排班開始日期? ?? ?? ???排班開始時間? ?? ?? ?? ?? ?? ?? ???排班結束日期? ?? ?排班結束時間? ? 上班時間? ?下班時間
裕民? ?? ?? ? 2020-08-01? ?? ?? ?? ?? ? 18:00:002020-08-02? ?? ?? ?06:00:00? ?? ?? ? 21:00:00? ?? ? 04:00
劉文? ?? ?? ? 2020-08-01? ?? ?? ?? ?? ? 06:00:00? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???2020-08-01? ?? ?? ?18:00:00? ?? ?? ?? ?? ?09:00:00? ?? ? 17:00:00
根據排班規則??裕民 這個人要在 2020-08-01 18:00:00 之后打卡 , 到第二天 2020-08-02 06:00:00 之前??打卡就算 是 同一天打卡 (算作 2020-08-01的打卡日期)
劉文? ?? ???這個人要在 2020-08-01 06:00:00??之后打卡 , 當天 2020-08-01 18:00:00之前打卡就算 同一天打卡
如果某個人的上班、下班打卡時間 在排班時間之內,且沒有遲到早退 (比如劉文,上班肯定不能遲于早上9:00, 17:00之前早退),就屬于正常考勤,設置為1 否則為0
測試數據如下
with??a??as (
select '裕民'??姓名,? ?'2020-07-31' 排班開始日期 , '18:00:00' 排班開始時間 ,??'2020-08-01'??排班結束日期,'06:00:00' 排班結束時間,'2020-07-31 22:00:00'工作安排開始時間,'2020-08-01 03:00:00'工作安排結束時間,'2020-07-31 05:00:00' 打卡開始時間 from dual? ?--7月30日上夜班一直到7月31日 上午打卡下班
union all
select '裕民'??姓名,? ?'2020-07-31' 排班開始日期 , '18:00:00' 排班開始時間 ,??'2020-08-01'??排班結束日期,'06:00:00' 排班結束時間,'2020-07-31 22:00:00'工作安排開始時間,'2020-08-01 03:00:00'工作安排結束時間,'2020-07-31 19:00:00' 打卡開始時間 from dual??--7月31日上班打卡
union all
select '裕民'??姓名,? ?'2020-08-01' 排班開始日期 , '18:00:00' 排班開始時間 ,??'2020-08-02'??排班結束日期,'06:00:00' 排班結束時間,'2020-07-31 22:00:00'工作安排開始時間,'2020-08-01 03:00:00'工作安排結束時間,'2020-08-01 05:00:00' 打卡開始時間 from dual??-- 7月31日上夜班一直到8月1日上午打卡下班
union all
select '裕民'??姓名,? ?'2020-08-01' 排班開始日期 , '18:00:00' 排班開始時間 ,??'2020-08-02'??排班結束日期,'06:00:00' 排班結束時間,'2020-07-31 22:00:00'工作安排開始時間,'2020-08-01 03:00:00'工作安排結束時間,'2020-08-01 19:00:00' 打卡開始時間 from dual? ?---8月1日打卡上班
union all
select '劉文'??姓名,? ?'2020-07-31' 排班開始日期 , '06:00:00' 排班開始時間 ,??'2020-07-31'? ?排班結束日期,'06:00:00' 排班結束時間,'2020-07-31 09:00:00'工作安排開始時間,'2020-07-31 17:00:00'工作安排結束時間,'2020-07-31 17:30:00' 打卡開始時間 from dual? ?--7月31日下班打卡
union all
select '劉文'??姓名,? ?'2020-08-01' 排班開始日期 ,'06:00:00' 排班開始時間 ,??'2020-08-01'??排班結束日期,'06:00:00' 排班結束時間,'2020-08-01 09:00:00'工作安排開始時間,'2020-08-01 17:00:00'工作安排結束時間,'2020-08-01 08:30:00' 打卡開始時間 from dual??--8月1日上班打卡
union all
select??'劉文'??姓名,? ?'2020-08-01' 排班開始日期 , '06:00:00'排班開始時間 ,??'2020-08-01'??排班結束日期,'06:00:00' 排班結束時間,'2020-08-01 09:00:00'工作安排開始時間,'2020-08-01 17:00:00'工作安排結束時間,'2020-08-01 17:30:00' 打卡開始時間 from dual? ?--8月1日下班打卡
)
select * from a