练习18道题

#1.查询部门平均工资在2500元以上的部门名称及平均工资。
select dname,avg(sal) salavg
from emp e
join dept d
on e.deptno=d.deptno
group by e.deptno
having salavg >2500

#2.查询员工岗位中不是以“SA”开头并且平均工资在2500元以上的(岗位及平均工资),
#并按平均工资降序排序。
select job,avg(sal) salavg
from emp
group by job
having job not like 'sa%' and salavg >2500

#3.查询部门人数在2人以上的(部门名称、最低工资、最高工资,)
#并对求得的工资进行四舍五入到整数位。
select dname,round(min(sal)),round(max(sal))
from emp e
join dept d
on e.deptno=d.deptno
group by e.deptno
having count(empno) > 2 

#4.查询岗位不为SALESMAN,工资和大于等于2500的(岗位及每种岗位的工资和)。
select job,sum(sal) sumsal
from emp
group by job
having job not in('SALESMAN') and sumsal > 2500
 
#5.显示经理号码和经理姓名,这个经理所管理员工的最低工资,
#没有经理的KING也要显示,不包括最低工资小于3000的,按最低工资由高到低排序。
select m.empno,m.ename,min(e.sal) 最低工资
from emp e
left join emp m
on e.mgr=m.empno
where e.sal >3000
group by e.mgr
order by 最低工资 desc

#6.查询工资高于编号为7782的员工工资,并且和7369号员工从事相同工作的员工的
#(编号、姓名及工资)。
select empno,ename,sal
from emp
where sal>(select sal from emp where empno = 7782 ) and job in (select job from emp where empno=7369)



#7.查询工资最高的员工姓名和工资。 
select ename,sal
from emp
where sal=(select max(sal) from emp)
#8.查询部门最低工资高于10号部门最低工资的(部门编号、名称及部门最低工资)。
select e.deptno,dname
from emp e
join dept d
on e.deptno=d.deptno
group by e.deptno
having min(sal)>(select min(sal) from emp where e.deptno = 10)
#9.查询员工工资为其部门最低工资的员工的编号和姓名及工资。
select empno,ename,sal
from emp
where sal in (select min(sal) from emp group by deptno)
#10.显示经理是KING的员工姓名,工资。
select ename,sal
from emp 
where mgr in (select empno from emp where ename='king')
#11.显示比员工SMITH参加工作时间晚的(员工姓名,工资,参加工作时间。)
select ename,sal,hiredate
from emp 
where hiredate>(select hiredate from emp where ename='smith')
#12.使用子查询的方式查询哪些职员在NEW YORK工作。
select *
from emp 
where deptno in(select deptno from dept where loc='new york')
#13.写一个查询显示和员工SMITH工作在同一个部门的
#员工姓名,雇用日期,查询结果中排除SMITH。
select ename,hiredate
from emp e
join dept d
on e.deptno=d.deptno
where dname in (select dname from emp e join dept d on e.deptno = d.deptno where ename='smith')
and ename not in('smith')
#14.写一个查询显示其工资比全体职员平均工资高的(员工编号、姓名。)
select empno,ename
from emp
where sal>(select avg(sal) from emp)
#15. 显示部门名称和人数
select dname,count(e.empno)
from emp e
join dept d
on e.deptno=d.deptno
group by e.deptno,dname
#16. 显示每个部门的最高工资的员工
select *
from emp e
join dept d
on e.deptno =d.deptno
where sal in(select max(sal)
from emp e
join dept d
on e.deptno =d.deptno
group by e.deptno)
#17. 显示出和员工号7369部门相同的员工姓名,工资
select ename,sal
from emp e
join dept d
on e.deptno = d.deptno
where dname in(select dname from emp e join dept d on e.deptno = d.deptno where empno=7369)
#18. 显示出和姓名中包含“W”的员工相同部门的员工姓名
select ename
from emp e
join dept d
on e.deptno = d.deptno
where dname in(select dname from emp e join dept d on e.deptno = d.deptno where ename like '%w%')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容