oracle之高级查询练习
2016-03-04 00:25
627 查看
学习oracle三天了,今天学习了oracle高级查询,接下来,试着用这几天所学,完成下面的练习题,答案附在后面。
1)写SQL语句,查询哪个部门的平均工资是最高的,列出部门编码、平均工资。
2)写SQL语句,列出各个部门中工资最高的员工的信息:名字、部门号、工资。
3)写SQL语句,查询管理者是“KING”的员工姓名(ename)和工资(sal)。
4) 写SQL语句,查询部门所在地(loc)为“NEW YORK”的部门的员工的姓名(ename),部门名称(dname)和岗位名称(job)。
5)写SQL语句,查询工资比公司平均工资高的所有员工的员工号(empno), 姓名(ename)和工资(sal)。
6)写SQL语句,查询姓名中包含字母“u”的员工在相同部门的员工的员工号(empno)和姓名(ename)。
7)写SQL语句,查询哪些员工的薪水比本部门的平均薪水低。
8) 查询emp表前5条记录
9) 查询第3-5条记录,无需排序
10) 查询公司工资最高的三个人
11) 查询公司工资最低的五个人
本练习所选用表格,请参照:
/article/3701936.html
========================答案:============================
1)写SQL语句,查询哪个部门的平均工资是最高的,列出部门编码、平均工资。
2)写SQL语句,列出各个部门中工资最高的员工的信息:名字、部门号、工资。
3)写SQL语句,查询管理者是“KING”的员工姓名(ename)和工资(sal)。
4) 写SQL语句,查询部门所在地(loc)为“NEW YORK”的部门的员工的姓名(ename),部门名称(dname)和岗位名称(job)。
5)写SQL语句,查询工资比公司平均工资高的所有员工的员工号(empno), 姓名(ename)和工资(sal)。
6)写SQL语句,查询姓名中包含字母“u”的员工在相同部门的员工的员工号(empno)和姓名(ename)。
7)写SQL语句,查询哪些员工的薪水比本部门的平均薪水低。
8) 查询emp表前5条记录
9) 查询第3-5条记录,无需排序
10) 查询公司工资最高的三个人
11) 查询公司工资最低的五个人
本练习所选用表格,请参照:
/article/3701936.html
========================答案:============================
--1) 写SQL语句,查询哪个部门的平均工资是最高的,列出部门编码、平均工资。 select t2.deptno,t2.avgsal from (select t1.deptno deptno,t1.avgsal avgsal,rownum rn from (select deptno,avg(sal) avgsal from emp group by deptno order by avg(sal) desc)t1)t2 where t2.rn=1; --2) 写SQL语句,列出各个部门中工资最高的员工的信息:名字、部门号、工资。 select t1.ename,t1.deptno,t1.sal from( select ename,deptno,sal,ROW_NUMBER()over(partition by deptno order by sal) salrank from emp)t1 where t1.salrank=1; --3) 写SQL语句,查询管理者是“KING”的员工姓名(ename)和工资(sal)。 select m.ename m,w.ename wename from emp w,emp m where w.mgr=m.empno;--查询出每个员工的管理者 select t1.wename,t1.wsal,t1.mename from (select m.ename mename,w.ename wename,w.sal wsal from emp w,emp m where w.mgr=m.empno) t1 where t1.mename = 'king'; --4) 写SQL语句, 查询部门所在地(loc)为“NEW YORK”的部门的员工的姓名(ename),部门名称(dname)和岗位名称(job)。 select deptno from dept where loc='new york';--查出部门所在地为new york部门号 select ename ,dname ,job from emp ,dept where emp.deptno=dept.deptno and dept.loc = (select loc from dept where loc='new york'); --5) 写SQL语句,查询工资比公司平均工资高的所有员工的员工号(empno), 姓名(ename)和工资(sal)。 select avg(nvl(sal,0)) from emp;--公司平均工资 select empno,ename,sal from emp where sal>(select avg(nvl(sal,0)) from emp); --6) 写SQL语句,查询姓名中包含字母“u”的员工在相同部门的员工的员工号(empno)和姓名(ename)。 select ename from emp where ename like'%u%';--查询名字包含字母u的员工 select empno,ename,sal from emp where ename =(select ename from emp where ename like'%u%'); --7) 写SQL语句,查询哪些员工的薪水比本部门的平均薪水低。 select deptno,avg(sal) from emp group by deptno;--查询每个部门的平均薪水 select * from emp,(select deptno,avg(sal) avgsal from emp group by deptno)t1 where emp.deptno=t1.deptno and emp.sal<t1.avgsal; --8) 查询emp表前5条记录 select * from (select e.*,rownum rn from emp e)t1 where t1.rn<=5; --9) 查询第3-5条记录,无需排序 select * from (select e.*,rownum rn from emp e)t1 where t1.rn between 3 and 5; --10) 查询公司工资最高的三个人 select * from (select salrank.*,rownum rn from (select e.* from emp e order by e.sal desc)salrank)t where t.rn<=3; --11) 查询公司工资最低的五个人 select * from (select salrank.*,rownum rn from (select e.* from emp e order by e.sal asc)salrank)t where t.rn<=5;
相关文章推荐
- Oracle 10g的新特性:闪回技术
- ORA-01000: 超出打开游标的最大数
- oracle11g 创建id自增长监听器的步骤与问题
- Oracle11g手动创建数据库方法
- Oracle11g手动创建数据库方法
- Oracle sqlplus 查看View源代码
- Oracle以及SDE维护常用命令-查看表空间等
- ORACLE 12c 固定表2
- ORACLE 12c 固定表1
- ORACLE 12c 所有latch name
- ORACLE 12c 支持的hint 命令
- Linux下安装Oracle的jdk1.8
- 大数据应用时Oracle优化实例
- 在rhel7下,安装oracle database时不能选择xfs文件,原因是不支持
- Oracle 11gR2 SCAN 详解
- oracle-存储过程实例
- oracle数据库卸载步骤
- Oracle开发之窗口函数 rows between unbounded preceding and current row
- Mybatis传list参数调用oracle存储过程
- Oracle exp命令导出空表不成功的解决方法