oracle经典题库

2018-12-06 21:16

--1、显示所有部门名

selectdept.dname from dept;

--2、显示所有雇员名及其全年收入(工资+补助),并指定列别名“年收入” select emp.ename as 雇员名,nvl2(comm,comm+sal,sal)*12 as 年收入 from emp; select emp.ename , (emp.sal+nvl(bonus.sal,0))*12 as 年收入 fromemp left join bonus on emp.ename = bonus.ename; --3、显示存在雇员的所有部门号 selectemp.deptno from emp;

--4.显示工资超过2850的雇员名和工资

select emp.ename as 雇员名,emp.sal as 工资 from emp where emp.sal> 2850; --5.显示工资不在1500到2850之间的所有雇员名及工资

select emp.ename as 雇员名,emp.sal as 工资 from emp where emp.sal not between 1500 and 2850;

--6、显示雇员代码为7566的雇员名及所在部门号 selectdeptno from emp where empno = 7566;

--7、显示部门代码为10和30中工资超过1500的雇员名及工资

select emp.ename as 雇员名,emp.sal as 工资 from emp where emp.deptno in(10,30) and emp.sal< 1500;

--8、显示无管理者的雇员名及岗位

selectemp.ename,emp.job from emp where mgr is null;

--9、显示所有雇员的平均工资、总计工资、最高工资、最低工资

select round(avg(emp.sal),2) as 平均工资,count(emp.sal) as 总计工资,max(emp.sal) as 最高工资,

min(emp.sal) as 最低工资 from emp ; --10、显示每种岗位的雇员总数、平均工资 select * from emp;

select count(empno) as 总人数 , round(avg(sal),2) as 平均工资 fromemp group by job;

--11、显示雇员总数,以及获得补助的雇员数 select * from emp;

select count(emp.empno) as 总人数 ,

count(bonus.ename) as 补助总人数

fromemp left join bonus on emp.ename = bonus.ename; --12、显示管理者的总人数

select count(distinct mgr) as 管理者总人数 from emp ; --13、显示雇员工资的最大差额

select * from emp;

select max(sal)-min(sal) as 最大差额 from emp;

--14、显示部门代码为20的部门号,以及该部门的所有雇员名、雇员工资及岗位 selectemp.ename,emp.sal,emp.job

fromemp where emp.deptno = 20;

--15、显示获得补助的所有雇员名、补助额以及所在部门号 selectemp.ename,bonus.sal,emp.deptno

fromemp inner join bonus

onemp.ename = bonus.ename;

--16、显示所有雇员的姓名、部门编号、工资,并且列名要显示为中文 select ename as 姓名 , deptno as 部门编号 , sal as 工资 from emp;

--17、显示每个部门每个岗位的平均工资、每个部门的平均工资、每个岗位的平均工资 selecta.deptno,a.job,a.deptno_job_avg,b.deptno_avg,c.job_avg from

(selectdeptno,job,avg(sal) as deptno_job_avg from emp group by deptno,job) a left join (select deptno,avg(sal) as deptno_avg from emp group by deptno) b ona.deptno = b.deptno

left join (select job,avg(sal) as job_avg from emp group by job) c ona.job = c.job order by deptno;

select job,deptno,avg(job) as 岗位的平均工资,avg(emp.deptno) as 部门的平均工资 fromemp group by grouping sets (job,deptno);

selectdeptno,job,avg(sal) from emp group by grouping sets(emp.deptno,emp.job); --18、显示工资大于1500的雇员名和工资,并且按照工资的降序排列 select emp.ename as 雇员名,emp.sal as 工资

fromemp where emp.sal> 1500 order by emp.saldesc;

--19、显示雇员部门编号为10或20的信息(要求使用IN关键字) select * from emp where emp.deptno in(10,20); --20、显示雇员名的第二个字母为A的信息 select * from emp;

select * from emp where emp.ename like '_A%'; --21、显示没有发放补助的雇员信息 select * from emp

whereename not in (select ename from bonus); --22、显示雇员表中记录总数

select count(*) from emp; --第二部分

--1、显示所有雇员名、雇员工资及所在部门名 selectemp.ename,emp.sal,dept.dname fromemp,dept

whereemp.deptno=dept.deptno;

--2、显示部门代码为20的部门名,以及该部门的所有雇员名、雇员工资及岗位 selectdept.dname,emp.ename,emp.sal,emp.job fromemp,dept

whereemp.deptno=dept.deptno and emp.deptno=20; --3、显示所有雇员名、雇员工资及工资级别 selectemp.ename,emp.sal,salgrade.grade

fromemp,salgrade

whereemp.sal>salgrade.losal and emp.sal<=salgrade.hisal --4、显示雇员“SCOTT”的管理者名 selectdept.loc from emp,dept

whereemp.ename='SCOTT' and emp.deptno = dept.deptno;

--5、显示获得补助的所有雇员名、补助额以及所在部门名

selectemp.ename,bonus.sal,dept.dname fromemp,dept,bonus

whereemp.ename = bonus.ename and emp.deptno=dept.deptno;

--6、查询EMP表和SALGRADE表,显示部门代码为20的雇员名、工资及其工资级别 selectemp.ename,emp.sal,salgrade.grade fromemp,salgrade

whereemp.deptno=20 and emp.sal>salgrade.losal and emp.sal<=salgrade.hisal; --7、显示部门代码为10的所有雇员名、部门名,以及其他部门名 select * from emp; select * from bonus; select * from dept;

select * from salgrade;

selecte.ename,d.dname from emp e left join dept d on e.deptno=10 and d.deptno=10 order by d.dname

--8、显示部门代码为10的所有雇员名、部门名,以及其他雇员名 selectemp.ename,dept.dname fromemp

right join dept

onemp.deptno=10 and emp.deptno=dept.deptno order by emp.ename;

--9、显示部门代码为10的所有雇员名、部门名,以及其他部门名和雇员名 selectemp.ename,dept.dname fromemp full join dept

onemp.deptno=10 and emp.deptno=dept.deptno order by emp.ename; --10、显示\同部门的所有雇员,但不显示\select * from emp where emp.deptno=(select emp.deptno fromemp

whereemp.ename='BLAKE' )and emp.ename<>'BLAKE' ;

第三部分

1、按以下格式显示下面的信息,条件是工资大于1500的。 部门名称姓名工资

select d.dname as 部门名称, e.ename as 姓名,e.sal as 工资 fromemp e, dept d

wheree.deptno = d.deptno and sal> 1500

2、按以下格式显示下面信息,条件是此人工资在所有人中最高。 部门姓名工资

select d.dname as 部门名称, e.ename as 姓名,e.sal as 工资 fromemp e, dept d wheree.sal

in (

select max(sal) from emp )

ande.deptno = d.deptno

3、按以下格式显示下面信息 某人为某人工作

select a.ename as 某人为 ,b.ename as 某人 ,a.job as 工作 from empa,emp b where a.empno = b.mgr

4、为所有人长工资,标准是:10部门长10%;20部门长15%;30部门长20%其他部门长18%(要求用DECODE函数)

select round(decode(deptno,'10',sal*(1+0.1), '20',sal*(1+0.15), '30',sal*(1+0.2),sal*(1+0.18)),2) as 工资 from emp updateemp

setsal=decode(deptno,'10',sal*(1+0.1), '20',sal*(1+0.15), '30',sal*(1+0.2),sal*(1+0.18)); 5、根据工作年限长工资,标准是:为公司工作了几个月就长几个百分点。 select round(sal * (1+(sysdate - hiredate)/365/12/100),2) from emp updateemp

setsal= round(sal * (1+(sysdate - hiredate)/365/12/100),2); 6、查询出king所在部门的部门号\\部门名称\\部门人数 select e.deptno as 部门号,d.dname as 部门名称, (

select count(*) from (select deptno from emp where deptno in (select deptno from emp where ename='KING') )

) as 部门人数 fromemp e, dept d

wheree.deptno = d.deptno and e.ename = 'KING';

7、查询出king所在部门的工作年限最大的员工名字

selectename, hiredate from emp wherehiredate in (

select min(hiredate) from (select hiredate from emp where deptno in (select deptno from emp where ename='KING') ) )

8、查询出管理员工人数最多的人的名字和他管理的人的名字 select a.ENAME员工,b.ENAME as 管理员 fromEmp a join Emp b on a.MGR=b.EMPNO wherea.MGR=( select MGR from Emp group by MGR having count(MGR)=( select max(cn)

from (

select count(MGR) as cn,MGR fromEmp

group by MGR ) a ) )

order by a.MGR

select a.ename员工,b.ename管理员 from emp a, emp b wherea.empno in( selectmgr from (

select max(num) as num1 from ( select count(*) as num ,mgr from emp

wheremgr in (select a.mgr from empa,emp b where a.mgr = b.empno) group by mgr

)) a,( select count(*) as num ,mgr from emp

wheremgr in ( select a.mgr from empa,emp b where a.mgr = b.empno) group by mgr) b where a.num1 = b.num

) and b.mgr in ( selectmgr from ( select max(num) as num1 from ( select count(*) as num ,mgr from emp

wheremgr in (select a.mgr from empa,emp b where a.mgr = b.empno ) group by mgr)) a,

( select count(*) as num ,mgr from emp

wheremgr in ( select a.mgr from empa,emp b where a.mgr = b.empno ) group by mgr) b where a.num1 = b.num)

9、查询出工资成本最高的部门的部门号和部门名称 select DEPTNO 部门编号,DNAME 部门名称 fromDept

where DEPTNO=(select DEPTNO fromEmp

group by DEPTNO

having sum(SAL)=( select max(SSAL) from (select sum(SAL) as SSAL,DEPTNO fromEmp

group by DEPTNO) a ) )

10、查询出工资不超过2500的人数最多的部门名称 select deptno as 部门编号,DNAME as 部门名称 fromDept

wheredeptno=(select deptno

from (select count(EMPNO) as cn,deptno

fromEmp

where SAL<=2500 group by deptno )a

wherecn=(select max(cn)


oracle经典题库.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课外辅导记录语文二年级

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: