oracle數據庫面試筆試試題總結
Oracle數據庫
1.基礎測試
選擇在部門 30 中員工的所有信息
Select * from emp where deptno=30;
列出職位為(MANAGER)的員工的編號,姓名
Select empno,ename from emp where job = ?Manager ?;
找出獎金高于工資的員工
Select * from emp where comm>sal;
找出每個員工獎金和工資的總和
Select sal+comm,ename from emp;
找出部門 10 中的經理(MANAGER)和部門 20 中的普通員工(CLERK)
Select * from emp where (deptno=10 and job=?MANAGER?) or (deptno=20 and job=?CLERK?);
找出部門 10 中既不是經理也不是普通員工,而且工資大于等于 2000 的員工 Select * from emp where deptno=10 and job not in(?MANAGER?,?CLERK) ? and sal>=2000;
找出有獎金的員工的'不同工作
Select distinct job from emp where comm is not null and comm>0
找出沒有獎金或者獎金低于 500 的員工
Select * from emp where comm<500 or comm is null;
顯示雇員姓名,根據其服務年限,將最老的雇員排在最前面
select ename from emp order by hiredate ;
2.函數測試
找出每個月倒數第三天受雇的員工(如:2009-5-29)
select * from emp where last_day(hiredate)-2=hiredate;
找出 25 年前雇的員工
select * from emp where hiredate<=add_months(sysdate,-25*12);< p="">
所有員工名字前加上 Dear ,并且名字首字母大寫
select Dear || initcap(ename) from emp;
找出姓名為 5 個字母的員工
select * from emp where length(ename)=5;
找出姓名中不帶 R 這個字母的員工
select * from emp where ename not like %R%;
顯示所有員工的姓名的第一個字
select substr(ename,0,1) from emp;
顯示所有員工,按名字降序排列,若相同,則按工資升序排序
假設一個月為 30 天,找出所有員工的日薪,不計小數
找到 2 月份受雇的員工
select * from emp where to_hiredate,fmmm)=2;
3.分組函數
分組統計各部門下工資>500 的員工的平均工資、
Select avg(sal) from emp where sal>500 group by deptno ;
統計各部門下平均工資大于 500 的部門
select deptno,avg(sal) from emp group by deptno having avg(sal)>500 ; 算出部門 30 中得到最多獎金的員工獎金
Select max(comm) from emp where deptno = 30 ;
算出部門 30 中得到最多獎金的員工姓名
select ename from emp where comm = (select max(comm) from emp where deptno=30);
算出每個職位的員工數和最低工資
Select job,min(sal),count(*) from emp group by job;
列出員工表中每個部門的員工數,和部門 no
Select count(*),deptno from emp group by deptno;
得到工資大于自己部門平均工資的員工信息
select * from emp e1,(select deptno,avg(sal) as avgsal from emp group by deptno) e2
where e1.deptno=e2.deptno and e1.sal > e2.avgsal;
分組統計每個部門下,每種職位的平均獎金(也要算沒獎金的人)和總工資(包括獎金) select deptno,job,avg(nvl(comm,0)),sum(sal+nvl(comm,0)) from emp group by deptno,job;
4.多表聯查
列出員工表中每個部門的員工數,和部門 no
select deptno,count(*) from emp group by deptno;
列出員工表中每個部門的員工數(員工數必須大于 3) ,和部門名稱
select d.* ,ed.cou from dept d,(select deptno,count(*) cou from emp group by deptno having count(*)>3) ed where d.deptno=ed.deptno;
找出工資比 jones 多的員工
select * from emp where sal>=(select sal from emp where
lower(ename)=jones);
列出所有員工的姓名和其上級的姓名
select e1.ename as lower ,e2.ename as upper from emp e1,emp e2 where e1.mgr
= e2.empno;
select e1.ename as lower ,e2.ename as upper from emp e1,emp e2 where e1.mgr = e2.empno(+);
以職位分組,找出平均工資最高的兩種職位
Select * from ( select avg(sal) from emp order by job desc ) where rownum<3; 20="" select="" d.dname="" from="" emp="" dept="" d="" where="" and="" e.sal="">(select max(sal) from
emp where deptno=20) and e.deptno=d.deptno
得到平均工資大于 2000 的工作職種
select job from emp group by job having avg(sal) > 2000;
分部門得到工資大于 2000 的所有員工的平均工資,并且平均工資還要大于 2500 select deptno,avg(sal) from emp where sal>2000 group by deptno having avg(sal)>2500;
得到每個月工資總數最少的那個部門的部門編號,部門名稱,部門位置 select * from dept
where
deptno = (
select e.deptno from
(select deptno,sum(sal) from emp group by deptno order by sum(sal)) e
where rownum=1
);
【oracle數據庫面試筆試試題總結】相關文章:
數據庫面試筆試題06-26
數據庫常見筆試面試題07-26
面試筆試題03-22
有關面試的筆試題09-03
護士面試筆試題09-03
華為面試筆試題08-19
人事面試筆試題08-14
電廠面試筆試題目07-12
中專面試筆試題目07-12
面試筆試題庫03-22