oracle复杂查询(一)

1、 列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。

select d.DEPTNO 部门编号,d.DNAME 部门名称,trunc(avg(e.SAL)) 平均薪资, min(e.SAL) 最低工资, max(e.SAL) 最高工资
from emp e, DEPT d WHERE e.DEPTNO(+)=d.DEPTNO GROUP BY d.DEPTNO,d.DNAME,d.LOC HAVING count(e.EMPNO)>0

 

2、 列出薪金比“MARTIN”或“ALLEN”多的所有员工的编号、姓名、部门名称、其领导姓名。
SELECT e.EMPNO 员工编号, e.ENAME 姓名,d.DNAME 部门名称,coalesce( e2.ENAME,'无领导')领导姓名
FROM EMP e, EMP e2, DEPT d WHERE e.MGR=e2.EMPNO(+) AND e.DEPTNO=d.DEPTNO
AND e.ENAME!='MARTIN' AND E.ENAME!='ALLEN' AND e.SAL > any(SELECT sal FROM EMP WHERE ENAME in('MARTIN','ALLEN'))

本题的重点是EMP的自关联

 

3、 列出所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。

select e.EMPNO 员工编号,e.ENAME 员工姓名,coalesce(e2.EMPNO,0) 上级编号,coalesce(e2.ENAME,'无') 上级姓名,e.SAL*12 年薪
FROM EMP e,EMP e2 WHERE e.MGR=e2.EMPNO(+) ORDER BY e.SAL DESC

 

列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
SELECT e1.EMPNO 员工编号,e1.ENAME 姓名,d.DNAME 部门名称,d.LOC 部门位置,temp.sum 部门人数
FROM EMP e1,EMP e2,DEPT d,(SELECT DEPTNO dno, count(EMPNO) sum FROM EMP GROUP BY DEPTNO) temp
WHERE e1.MGR=e2.EMPNO(+) AND e1.HIREDATE>e2.HIREDATE AND e1.DEPTNO=d.DEPTNO AND temp.dno=d.DEPTNO

 

列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
select e.ename,e.SAL,d.DNAME,e2.ENAME,s.GRADE
FROM EMP e,EMP e2,DEPT d,SALGRADE s
WHERE e.SAL>(SELECT avg(sal) FROM EMP)
AND e.MGR=e2.EMPNO(+) AND e.SAL BETWEEN s.LOSAL AND s.HISAL
AND e.DEPTNO=d.DEPTNO;
 
 

 

列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数
SELECT e.ENAME, d.dname,temp.sum FROM EMP e,
(SELECT count(EMPNO) sum,DEPTNO dno FROM EMP GROUP BY DEPTNO) temp,
DEPT d WHERE e.JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT')
AND e.DEPTNO=d.DEPTNO AND temp.dno=e.DEPTNO AND e.ENAME!='SCOTT';

 

 
 

列出公司各个工资等级雇员的数量、平均工资。
SELECT s.GRADE,count(e.EMPNO),avg(e.SAL)
FROM SALGRADE s,EMP e
WHERE e.SAL BETWEEN s.LOSAL AND s.HISAL
GROUP BY s.GRADE ORDER BY 1

 

列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
SELECT e.ENAME,e.SAL,d.DNAME FROM EMP e,DEPT d
WHERE e.SAL>(SELECT max(sal) FROM EMP WHERE DEPTNO=30)
AND e.DEPTNO=d.DEPTNO

 

 

转载于:https://www.cnblogs.com/HUCHEN/p/10004177.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值