1.需求是想计算如下表数据,计算出每个人的有效工时,用到的字段列为:
姓名(name)、 打卡日期(attendancedate)、 打卡时间(attendancetime)、 打卡位置(attendancearea)
2.关键点在于例如有中间出去吃饭的张三,他一天打了四次卡,06时、12时 、13时、17时,怎样做到在数据库计算中,得出有效出工时间,默认上班是没有规定时间的,只是中间出去可能吃午饭会再次刷一次出门卡和一次进门卡,怎么扣除出去的时间,计算得出有效的在公司内的有效工时,例如张三出去吃饭一小时,那这一天的有效工时是不会包含中午吃饭的一小时的,还有一种可能就是中间多刷了一次下班卡,或者多刷了一次上班卡,或者N次,但是没有一个进一个出对应起来的都算异常,怎样将这个标记为异常不计算标记查询出来的数据为 异常数据。请高手指教一下。感激不尽
3.图中例子只是参考,会有很多人很多打卡数据的,也会有很多天的,希望可以支持区间多日查询有total有效工时的计算,请给出sql语句,拼出显示数据的t-sql,可以执行并看见效果。可以用临时表计算存储过程,种类不限,可用就行,急急急
效果如图,拼当日计算语句就行了,报表这个按月列出每日的我自己做
select a.ID,a.attendancedate,max(b.t)-min(b.t) work
from (select ID,attendancedate from test group by ID,attendancedate) a left join (select ID,attendancedate,max(attendancetime)+min(attendancetime) as t from test group by ID,attendancearea) as b
on a.ID = b.ID and a.attendancedate=b.attendancedate
group by ID,attendancedate;
你好,计算不应该 在sql 来计算。sql 语句只是负责增删改查 而已。其他的操作得到程序中完成、
没啥事自己练练写的,希望对你有帮助!