4、列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
◆确定要使用的数据表:
●emp表:编号、姓名。
●emp表:找到领导的雇佣日期。
●dept表:部门名称、部门位置。
●emp表:统计出部门人数。
◆确定已知的关联字段:
●雇员和领导:emp.mgr = memp.empno
●雇员和部门:emp.deptno = dept.deptno
第一步:实现emp表的自身关联,找到受雇日期早于其直接上级的所有员工的编号、姓名
SELECT e.empno, e.ename
FROM emp e, emp m
WHERE e.mgr=m.empno(+)
AND e.hiredate
第二步:找到部门信息
SELECT e.empno, e.ename, d.dname, d.loc
FROM emp e, emp m, dept d
WHERE e.mgr=m.empno(+)
AND e.hiredate
AND e.deptno=d.deptno ;
第三步:在FROM子句里面统计出部门人数
SELECT e.empno, e.ename, d.dname, d.loc,temp.count
FROM emp e, emp m, dept d, (
SELECT deptno dno, COUNT(empno) count FROM emp GROUP BY deptno) temp
WHERE e.mgr=m.empno(+)
AND e.hiredate
AND e.deptno=d.deptno
ANDtemp.dno=d.deptno ;
网友评论