Oracle笔记4

2018-07-17  本文已影响241人  菁华浮英梦

16:多表连接子查询:

        --求部门中哪些人的薪水最高

            select ename,sal from emp

            join (select max(sal) max_sal,deptno from emp group by deptno) t

            on (emp.sal=t.max_sal and emp.deptno=t.deptno)

        --求部门平均薪水的等级

            select deptno,avg_sal,grade from

            (select deptno,avg(sal) avg_sal from emp group by deptno) t

            join salgrade s on (t.avg_sal between s.losal and s.hisal)

17:--求部门的平均薪水等级:

        select deptno,avg(grade) from

        (select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and

        s,hisal)) t

        group by deptno

18:--雇员中有哪些人是经理人:

        select ename from emp where empno in (select mgr from emp);

        select ename from emp where empno in (select distinct mgr from emp);//非常有效率!

19:--不用组函数求最高薪水

        select e1.sal from emp e1 join e2 on (e1.sal < e2.sal);

        select distinct e1.sal from emp e1 join e2 on (e1.sal < e2.sal);//去掉重复值!

        select distinct sal from emp where sal not in

        (select distinct e1.sal from emp e1 join e2 on (e1.sal < e2.sal));

20:--平均薪水最高的部门的部门编号

        1、先求每个部门的平均薪水:

            select avg(sal),deptno from emp group by deptno;

        2、求平均薪水最大的那个值:

            select max(avg_sal) from

            (select avg(sal),deptno from emp group by deptno);

        3、根据值求编号:

            selectdeptno,avg_sal from

                (select avg(sal) avg_sal,deptno from emp group by deptno)

            where avg_sal =

                (select max(avg_sal) from

                    (select avg(sal) avg_sal,deptno from emp group by deptno));

    --平均薪水最高的部门的部门名称

    select dname from dept where deptno =

    (

            selectdeptno,avg_sal from

                (select avg(sal) avg_sal,deptno from emp group by deptno)

            where avg_sal =

                (select max(avg_sal) from

                    (select avg(sal) avg_sal,deptno from emp group by deptno));

     )

上一篇 下一篇

猜你喜欢

热点阅读