日期:2014-05-18  浏览次数:20490 次

关于考勤统计的问题,没办法了,请高手给个思路
数据库为考勤明细记录表KQ12,包括:日期(RQ),时间(TIMES),员工工号(DGDH)

现员工是三班制,打卡有效时间分别为:

                      上班                                                                     下班
白班         7:30--8:30   (8:00-8:30为退到)                   16:00-16:30
中班         15:30--16:30   (16:00-16:30为退到)           24:00-0:30
晚班         23:30--0:30   (0:00-0:30为退到)                 8:00-8:30

每天打卡两次,其它时间打卡无效,打卡一次也无效.

如果有SQL存贮过程该怎样入手统计每人每月的出勤天数和退到时间?高手能不能给个思路?



------解决方案--------------------
从正常的上班考虑一天有3个上班时段(有的时候还有4个时段),结构如:
上午 下午 晚上 正班 加班 旷工 迟到 早退
---------------------------------------
上班 下班 上班 下班 上班 下班

再就是班次设置,如,普通员工班次:上午、下午、晚上应该刷卡的时间,应正班多少,加班多少,刷卡间隔多少无效等设置。
功能复杂一点的还有班组排班,日历设置(国假,公司日历、民族假日...),请假登记、外出登记、其他登记等。
处理考勤是一件很复杂的过程。要先写好考勤处理流程。具体的过程,有点复杂,不是一时能说得清楚的。呵呵


------解决方案--------------------
我觉得,先得到每人每天的出勤结果,一个月的只要简单加总就可以了
------解决方案--------------------
呵呵,考勤分析是一个比较大的问题。如果只是想实现上面的功能。应该比较简单,个人认为大致思路如下:
1.从排班表取员工的该天班次。确定上班,下班的打卡有效范围。
2.从打卡记录表内读出员工该天打卡记录,如果没有记录,则该天缺勤。
3.建立游标对打卡记录按时间先后循环,判断打卡是否在上班的有效范围内,如果是则判断是否退到。不是则判断是否在下班的有效范围内,在则判断是否早退,不在则继续找下一条打卡记录。注意,有效范围内有多次打卡则上班取最后一次有效打卡作为上班打卡,下班取最早一次有效打卡作为下班卡。
4。如果只有上班打卡或下班打卡均算缺勤。
其实这个只是最简单的情况的考勤,还有很多因素未考虑进去,比如说班段请假,调休,外勤等导致的打卡时间不规范,也应分析。