Oracle 课堂3

本文详细介绍了Oracle数据库中的查询技巧,包括查询部门人数超过平均人数的部门、部门平均工资最高、员工薪资高于部门平均薪资的情况。还涉及到交集、并集、差集等集合运算,以及相关子查询、层次查询的应用。此外,文章还涵盖了数据的增删改查操作,事务处理以及表的创建、修改和删除。
摘要由CSDN通过智能技术生成
--4.查询部门人数大于所有部门平均人数的的部门编号,部门名称,部门人数
SELECT emp.deptno,dname,count(ename)
FROM emp,dept
WHERE emp.deptno=dept.deptno
GROUP BY emp.deptno,dname  
HAVING count(ename)>(SELECT avg(count(ename)) FROM emp GROUP BY deptno);

--26.    显示出平均工资最高的的部门平均工资及部门名称
SELECT dname,round(avg(sal),2)
FROM emp JOIN dept ON emp.deptno=dept.deptno
GROUP BY dname
HAVING avg(sal)=(SELECT MAX(avg(sal))
                  FROM emp
                  GROUP BY deptno);
                  
13.查询大于自己部门平均工资的员工姓名,工资,所在部门平均工资,高于部门平均工资的额度。
SELECT deptno,avg(sal) a
FROM emp
GROUP BY deptno;

SELECT ename,sal,round(t.a,2),sal-round(t.a,2)
FROM emp,(SELECT deptno,avg(sal) A
          FROM emp
          GROUP BY deptno) t
WHERE emp.deptno=t.deptno and sal>t.a;


--查询大于自己部门平均工资的员工姓名,工资,所在部门平均工资,高于部门平均工资的额度。
   --部门平均工资
   SELECT deptno,count(empno),avg(sal) ps
   FROM emp
   GROUP BY deptno
   
   --部门总平均工资
   SELECT avg(t.ps)
   FROM (   SELECT deptno,count(empno),avg(sal) ps
            FROM emp
            GROUP BY deptno) t
            
  select ename,sal,(e.sal-(   SELECT avg(t.ps)
                              FROM (   SELECT deptno,count(empno),avg(sal) ps
                                       FROM emp
                                       GROUP BY deptno) t
                           )) as "额度"
  from emp e,(   SELECT deptno,count(empno),avg(sal) ps
               FROM emp
               GROUP BY deptno) t
  WHERE e.deptno=t.deptno
       and sal>t.ps
       
       
查询大于自己部门平均工资的员工姓名,工资,所在部门平均工资,高于部门平均工资的额度。
 --部门平均工资
   SELECT deptno,count(empno),avg(sal) ps
   FROM emp
   GROUP BY deptno
      
  select ename,sal,(e.sal-t.ps) as "额度"
  from emp e,(   SELECT deptno,count(empno),avg(sal) ps
               FROM emp
               GROUP BY deptno) t
  where e.deptno=t.deptno
       AND sal>t.ps
       AND e.sal-t.ps>0
       
24.    显示每位经理管理员工的最低工资,及最低工资者的姓名
select e.sal,e.ename from emp e,
(SELECT MIN(e.sal) salary,m.empno FROM emp e,emp m WHERE e.mgr = m.empno GROUP BY m.empno) l
WHERE e.sal = l.salary AND e.mgr = l.empno

--24.    显示每位经理管理员工的最低工资,及最低工资者的姓名
SELECT ename,sal FROM emp WHERE (sal,mgr) IN (SELECT MIN(sal),mgr FROM emp GROUP BY mgr);

SELECT mgr,MIN(sal) M
FROM emp
GROUP BY mgr;

SELECT ename,t.m
FROM emp,(SELECT mgr,MIN(sal) M
          FROM emp
          GROUP BY mgr) t
WHERE emp.mgr(+)=t.mgr AND sal&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值