数据库一些面试题

1.部门平均薪水的等级(两张表关联)

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 );

2.求部门哪些人的薪水最高

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);

3.求部门平均的薪水等级

select deptno,avg(grade) from 

(

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

)  t 

group by deptno ;

4 雇员中哪些人是经理人

select  ename  from emp where  empno in

(

select distinct  mgr from emp

5 不准用组函数,求薪水的最高值(面试题)

思路:两张表是同一张表,都有薪水字段,设置链接条件  先查出 有比自己大的  数据链接 不在里面的即为最大值,因为最大值没有比自己大的

select  distinct sal from emp where sal not in

(

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

 

)

6.求平均薪水最高的部门的部门编号

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

select max(avg_sal)  from 

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

7 求平均薪水最高的部门的部门名称

思路    查询部门名称 从部门表中    条件   部门编号= 平均薪水最高的部门的部门编号(上题结果中含有)

select dname from dept  where deptno=

        

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

select max(avg_sal)  from 

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

8 求平均薪水的等级最低的部门名称(待续)

 

面试题比较效率

select * from emp where deptno = 10 and ename like ' %A%';

select * from emp where ename like ' %A%' and deptno = 10 ;

上面的好,先执行相当于索引   在局部扫描 ,而第二个 会全局扫描 再两次筛选;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值