先打个小广告微信公众号:
--1. 列出工资在1000到2000之间的所有员工的ENAME,DEPTNO,SAL
select ename,deptno,sal from emp where sal>1000 and sal<2000;
select ename,deptno,sal from emp where sal between 1000 and 2000;
--2. 显示DEPT表中的部门号和部门名称,并按部门名称排序
select dname ,deptno
from dept
order by dname;
--3. 显示所有不同的工作类型。
select distinct job from emp;
--4. 查询名字只有4个字符的所有职工;
select ename from emp
where ename like'____';
--5. 查询有7902,7566,7788三个MGR号之一的所有职工
select job ,mgr from emp
where mgr=7902 or mgr= 7566 or mgr=7788;
--6. 列出部门号在10到20之间的所有员工,并按名字的字母排序
select ename , deptno
from emp
where deptno between 10 and 20
order by ename;
-- 7. 列出部门号是20,工作是职员的员工。
select * from emp
where job= 'CLERK' and deptno = 20;
---8. 显示名字中包含TH和LL的员工名字。
select ename from emp
where ename like '%TH%' or ename like '%LL%';
--9. 显示所有员工的名字和报酬
select ename ,comm
from emp;
--10. 显示在1982年中雇佣的员工
select ename from emp
where to_char(hiredate,'yyyy')=1982;
--11. 查询每个部门的平均工资、最低工资、最高工资。
select deptno 部门号,avg(sal),min(sal),max(sal) from emp
group by deptno;
--12. 查询出每个部门中工资最高的职工
select dname 部门名称,ename 员工 from emp e1 inner join dept on dept.deptno=e1.deptno
where sal=( select max(sal) from emp e2 where e1.deptno = e2.deptno );
--13. 查询出每个部门比全部员工平均工资高的职工人数
select deptno 部门编号,count(deptno) 人数 from emp
where sal>(select avg(sal) from emp e2 )
group by deptno;
--14. 在SCOTT模式下,使用all关键字过滤工资(sal)同时不等于3000、950和800的员工记录。
select * from emp e1
where sal <> all(select sal from emp e2 where
sal in (3000,950,800));
-15. 使用LIKE关键字,在emp表中,要显示在1981年雇佣的所有员工的信息。
select * from emp where to_char(hiredate,'yyyy')like 1981;
--16. 在emp表中,查询工作时TURNER的员工姓名,但是不记得TURNER的准确拼写,
--但还记得它的第1个字符是T,第3个字符是R,第5个字符为E。
select * from emp where ename like 'T%R%E%';
--17. 查询工资大于3000的雇员姓名、工资、雇佣时间及所在部门名称。
select ename 姓名, sal 工资,hiredate 雇用时间, dname 部门名称 from
emp inner join dept on emp.deptno = dept.deptno
where sal>3000;
--18. 查询出每个部门比本部门员工平均工资高的职工人数。(5分)
--结果显示:“部门号 ” ,“比平均工资高的人数”
select deptno 部门号, count(deptno)比平均工资高的人数 from emp
where sal>(select avg(sal) from emp)
group by deptno;
--19. 在SCOTT模式下,创建一个dept表与emp表相互关联的视图
create or replace view emp_view_complex as
select empno 员工编号, ename 员工姓名 ,dname 部门名称,sal 工资 ,emp.deptno 部门编号
from emp inner join dept on emp.deptno = dept.deptno;
--20. 通过emp_view_complex视图查询20号部门员工的姓名、工资信息及所在部门名和部门所在位置
select * from emp_view_complex where 部门编号 = 20;
--删除视图emp_view_complex
drop view emp_view_complex;
--21. 查询员工的姓名、编号、所在部门、工资(sal)、
--工资等级,并显示查询结果中的前6条记录(提示:使用伪列rownum
select ename,empno,dname,sal,grade from emp
inner join dept on emp.deptno = dept.deptno inner join
salgrade on sal between losal and hisal
where rownum <=6;
--22. 使用“关联子查询”检索emp表中工资小于同职位平均工资的员工信息
select * from emp e1 where sal<
(select avg(sal) from emp e2 where e2.job=e1.job);
--23. 从EMP中查询出工资最低的职工。查询结果包括雇员姓名、职务及所在部门名称
select ename ,job ,dname from emp inner join dept
on emp.deptno=dept.deptno
where sal=(select min(sal) from emp);
--24. 从EMP中查询出每个部门工资最低的职工
select * from emp e1 where sal
=(select min(sal) from emp e2 where e1.deptno=e2.deptno);