马士兵老师oracle视频学习笔记(三)

[size=large]常用SQL:
--求部门中哪些人的薪水最高
select ename,sal from emp join (select max(sal) maxsal ,deptno from emp group by deptno) t on (emp.deptno = t.deptno and emp.sal = t.maxsal);

--求部门平均薪水的等级
select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on avg_sal between losal and hisal;

--求部门平均的薪水等级
select deptno,avg(grade) avg_grade from (select deptno,sal,grade from emp join salgrade s on sal between losal and hisal) t group by t.deptno;

--雇员中有哪些是经理人
select * from emp where empno in (select distinct mgr from emp);

--不准用组函数,求薪水的最大值(面试)
select * from (select sal from emp order by sal desc) t where rownum = 1;
select sal1 from (select e1.sal sal1,e2.sal sal2 from emp e1 left join emp e2 on e1.sal < e2.sal) where sal2 is null;
(上面这一句妙啊,两张表自连接,取第一张表里的薪水大于第二章表的薪水的值,则第一张表里最大的薪水就没有对应的信息)
select distinct sal from emp where sal not in (select distinct e1.sal from emp e1 join emp e2 on (e1.sal < e2.sal));
上面一句比我写的更简洁啊

--求平均薪水最高的部门的部门编号
select deptno,avgsal from (select avg(sal) avgsal, deptno from emp group by deptno) t where t.avgsal = (select max(avg(sal)) from emp group by deptno)

--求平均薪水最高的部门的部门名称
select dname from dept where deptno = (select deptno from (select avg(sal) avgsal, deptno from emp group by deptno) t where t.avgsal = (select max(avg(sal)) from emp group by deptno));

--求平均薪水的等级最低的部门的部门名称
select dname from dept where deptno =(select deptno from (select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on avg_sal between losal and hisal)
d where grade = (select min(grade) from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on avg_sal between losal and hisal));

--求部门经理人中平均薪水最低的部门名称
select dname from dept where deptno = (select deptno from (select deptno,avg(sal) avgsal from (select * from emp where empno in (select mgr from emp)) t1 group by t1.deptno) where avgsal=(select min(avgsal) from ( select deptno,avg(sal) avgsal from (select * from emp where empno in (select mgr from emp)) t group by t.deptno )))[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值