sql练习题2

21.列出在部门"SALES"< 销售部> 工作的员工的姓名, 假定不知道SALES的部门编号.

不知道就先根据sales求出来

select ename,DEPTNO
from  emp
where DEPTNO=(select DEPTNO from dept where dname='sales')

22、列出薪金高于公司平均薪金所有员工,所在部门,上级领导,公司的工资等级

关联多张表实现 ,注意left join 否则king会因为null不在empno而不展示

 


SELECT e.ENAME,d.DNAME,ee.ENAME,s.GRADE 
from emp e left JOIN emp ee 
on   e.mgr=ee.EMPNO  
join salgrade s  
on e.sal BETWEEN s.LOSAL and s.HISAL   
join dept d   
on e.deptno=d.deptno 
WHERE  e.sal>(select avg(sal) from emp) 
  

23、 列出与"SCOTT" 从事相同工作的所有员工及部门名称

 自连接找到相同工作的,判断完把scott丢了

select ee.ename,e.job,d.DNAME
 from emp e 
join emp ee
	on e.job=ee.job 
join dept d 
	on ee.DEPTNO=d.DEPTNO
  where e.ename='scott' 
		HAVING ee.ENAME!='scott'

24、列出薪金    【等于部门 30 中员工的薪金】    的其他员工的姓名和薪金.(和30部门薪资相同的)

select sal,ename
from emp 
where
     sal in(select DISTINCT e.SAL from emp e WHERE e.DEPTNO=30) 
     and DEPTNO !=30
 

25、列出薪金高于在部门 30 工作所有员工的薪金的员工姓名和薪金. 部门名称(高于30部门的)

高于就是算比最高还高就行 用max


select 
	e.sal,e.ename,d.DNAME
from 
	emp e join dept d
on
	e.DEPTNO=d.DEPTNO
where 
	e.sal >(select max(e.SAL) from emp e WHERE e.DEPTNO=30) and e.DEPTNO !=30

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值