mysql查询迟到人员姓名_通过输入时间段,查询出勤率,迟到次数,早退次数,旷工次数,用的ssh集成,oracle数据库,怎么写查询方法...
每个数据单独一个 SQL 比较好写,如果整个的一个 SQL 查出所有数据,就不是一般的难。以下 SQL 未经严格测试,且有前提条件:每天每个人只能上班打卡一次。出勤率 = 上班打卡次数/工作日数 , 这个需要测试,应该还需要关联用户表。(select count(*) from manualsign s where ms_time> ? and ms_time < ? )/(sele.
每个数据单独一个 SQL 比较好写,如果整个的一个 SQL 查出所有数据,就不是一般的难。
以下 SQL 未经严格测试,且有前提条件:每天每个人只能上班打卡一次。
出勤率 = 上班打卡次数/工作日数 , 这个需要测试,应该还需要关联用户表。
(select count(*) from manualsign s where ms_time> ? and ms_time < ? )
/(select count(*) from tbl_worktime w2 where wt_uptime> ? and wt_uptime < ?)
迟到次数 = "上班打卡时间"在同一天的"上班时间" 之前
select count(*) from manualsign s
where exists(select 1 from tbl_worktime w where to_char(s.ms_time,'yyyymmdd') = to_char(w.wt_uptime,'yyyymmdd')
and s.ms_time < w.wt_uptime
and wt_uptime> ? and wt_uptime < ?
)
and s.ms_tag = 1
and ms_time> ? and ms_time < ?
早退次数 = "下班打卡时间"在同一天的"下班时间" 之前
select count(*) from manualsign s
where exists(select 1 from tbl_worktime w where to_char(s.ms_time,'yyyymmdd') = to_char(w.wt_uptime,'yyyymmdd')
and s.ms_time < w.wt_downtime
and wt_uptime> ? and wt_uptime < ?
)
and s.ms_tag = 0
and ms_time> ? and ms_time < ?
旷工次数 = 工作日中无上班打卡的次数,应该还需要关联用户表。
select count(*) from tbl_worktime w
where wt_uptime> ? and wt_uptime < ?
and not exists(select 1 from manualsign s where to_char(s.ms_time,'yyyymmdd') = to_char(w.wt_uptime,'yyyymmdd') )
更多推荐
所有评论(0)