Staffer表(员工信息)内容如下ID* Name Age Dept1 Jack 25 IT2 Tom 26 IT3 Jessie 27 Sale4 Rose 26 Sale5 Steven 28 Market6 John 22 Market…Worktime表(一月30天全体员工上下班记录,假定30天均需考勤,如员工缺勤本表无相应

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 14:52:34
Staffer表(员工信息)内容如下ID* Name Age Dept1 Jack 25 IT2 Tom 26 IT3 Jessie 27 Sale4 Rose 26 Sale5 Steven 28 Market6 John 22 Market…Worktime表(一月30天全体员工上下班记录,假定30天均需考勤,如员工缺勤本表无相应
xV[OH+#UBNR$Z.UTJDbgcSԷp+i)uEH ݋_v=vԿ9Bh]9ߜcGRQ]N^ ??'Y{C{j2hDNbw~ChHERI(&I0šHr1Un̝ubI]hXNb 3t._WObef\6$d%orC(TL$ _WkL5DvE8%:sohRx0Ii32(s4h͂0iU4ݬsR)=lӖ *1l%'pEn@e+ t*Jm/ݒe6" aXeHVސ zдtfFf">+f>SzP {vRxNʪ_jqJjed,~-HrOu9xO=; :>^-kF4BpX9>g9*Q# aJ҇@7h^ zn\)ZG+`ݷR0D )N/8N~76: ^}"q[se[dr!t@SOuuSR,bۥ𕞙ݗ4M=mw$YsRK?!WI.>׉RpD{k^@펽3WvԁI鴚l) Nd*WMtՐ)qUHStQE"̫Q^XAOz쇬UkaU&qbMmz/ R3p{}t|$&@uX_GH~ߍ rFy{"-%+?? 

Staffer表(员工信息)内容如下ID* Name Age Dept1 Jack 25 IT2 Tom 26 IT3 Jessie 27 Sale4 Rose 26 Sale5 Steven 28 Market6 John 22 Market…Worktime表(一月30天全体员工上下班记录,假定30天均需考勤,如员工缺勤本表无相应
Staffer表(员工信息)内容如下
ID* Name Age Dept
1 Jack 25 IT
2 Tom 26 IT
3 Jessie 27 Sale
4 Rose 26 Sale
5 Steven 28 Market
6 John 22 Market

Worktime表(一月30天全体员工上下班记录,假定30天均需考勤,如员工缺勤本表无相应记录)
内容如下
ID* InTime OutTime DayNumber*
1 8:45 18:17 1
1 9:00 19:00 2

上表中*表示主键,假定上述数据表字段均不为空,公司规定上班时间为9:00,下班时间18:00,使用Sql语句或存储过程(函数)统计以下数据.
迟到、早退、缺勤员工姓名和对应日期
各部门员工日均工作时间(部门内员工总工作时间/30/部门人数)

Staffer表(员工信息)内容如下ID* Name Age Dept1 Jack 25 IT2 Tom 26 IT3 Jessie 27 Sale4 Rose 26 Sale5 Steven 28 Market6 John 22 Market…Worktime表(一月30天全体员工上下班记录,假定30天均需考勤,如员工缺勤本表无相应
--迟到
SELECT s.name 名字,
  w.daynumber 日期
FROM tbl_staff s,
  tbl_worktime w
WHERE s.id =w.id
AND to_date(w.intime,'hh24-mi-ss')>to_date('9:00','hh24-mi-ss') ;
--早退
SELECT s.name 名字,
  w.daynumber 日期
FROM tbl_staff s,
  tbl_worktime w
WHERE s.id =w.id
AND to_date(w.outtime,'hh24-mi-ss')<to_date('18:00','hh24-mi-ss');
--缺勤,暂时没想到好的
select name,1 daynumber from tbl_staff where id  not in(select id from tbl_worktime where daynumber=1)
union all
select name,2 daynumber from tbl_staff where id  not in(select id from tbl_worktime where daynumber=2)
union all
select name,3 daynumber from tbl_staff where id  not in(select id from tbl_worktime where daynumber=3)
...
select name,30 daynumber from tbl_staff where id  not in(select id from tbl_worktime where daynumber=30)
--部门日均工作时间
SELECT s.dept 部门,
  SUM(ceil((To_date(w.outtime , 'hh24-mi-ss') - To_date(w.intime , 'hh24-mi-ss')) * 24*60))/(30*COUNT(s.dept)) AS 按分钟计算
FROM tbl_staff s,
  tbl_worktime w
WHERE s.id=w.id
GROUP BY s.dept;