早教吧作业答案频道 -->其他-->
Staffer表(员工信息)内容如下ID*NameAgeDept1Jack25IT2Tom26IT3Jessie27Sale4Rose26Sale5Steven28Market6John22Market…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/部门人数)
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/部门人数)
▼优质解答
答案和解析
--迟到
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')--缺勤,暂时没想到好的
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;
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')
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;
看了 Staffer表(员工信息)...的网友还看了以下:
符号“f”表示一种算法,它对一些数的运算结果如下:(1)f(1)=0,f(2)=1,f(3)=2, 2020-05-16 …
浮力的几个公式分别什么时候用?浮力公式好多,字母也多,1.F浮=F向上-F向下2.F向上-F向下= 2020-06-08 …
I=(b-h3)/12.f=Mh/2I这个公式见过吗!里面的字母分别代表什么!只知道f表示抗弯强度 2020-06-19 …
判断下题,正确的用“T”表示,错误的用“F”表示。从采猎文明阶段→农业文明阶段→工业文明阶段,随着 2020-06-20 …
1.下面关于工作表与工作簿的论述正确的是1.下面关于工作表与工作簿的论述正确的是——A.一个工作簿 2020-07-01 …
某工序由下列工序组成,则工程总时数是多少?工序为:a,bc,d,e,f.紧前工序为:a,b,c,c 2020-07-26 …
方法1:压力差法:F浮=F向上-F向下其中向F向上、F向下分别表示物体上表面和下表面受到的压力.例 2020-07-29 …
符号“f”表示一种运算,它对一些数的运算结果如下:(1)f(1)=0,f(2)=1,f(3)=2,f 2020-11-19 …
符号“f”表示一种运算,它对一些数运算结果如下:(1)f(1)=0,f(2)=1,f(3)=2,f( 2020-11-20 …
判断下列内容,正确的用“T”表示,错误的用“F”表示。“光带着收获的喜悦从石榴里溢了出来,映着钻天杨 2020-12-01 …