日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 练习题P256

發布時間:2025/3/11 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 练习题P256 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--根據Oracle數據庫scott模式下的emp表和dept表,完成下列操作。
--(1)查詢20號部門的所有員工信息select * from emp where deptno = 20;
--(2)查詢所有工種為CLERK的員工的員工號、員工名和部門號select empno,ename,deptno from emp where job = 'CLERK';
--(3)查詢獎金(COMM)高于工資(SAL)的員工信息select * from emp where nvl(comm,0) > sal;
--(4)查詢獎金高于工資的20%的員工信息select * from emp where nvl(comm,0) > (sal * 0.2);
--(5)查詢10號部門中工種為MANAGER和20號部門中工種為CLERK的員工的信息select * from emp where (deptno = 10 and job = 'MANAGER') or (deptno = 20 and job = 'CLERK');
--(6)查詢所有工種不是MANAGER和CLERK,且工資大于或等于2000的員工的詳細信息select * from emp where job not in ('MANAGER','CLERK') and sal >= 2000;
--(7)查詢有獎金的員工的不同工種select distinct job from emp where nvl(comm,0) <> 0;
--(8)查詢所有員工工資與獎金的和select ename,sal,nvl(comm,0),(sal+nvl(comm,0)) from emp;
--(9)查詢沒有獎金或獎金低于100的員工信息select * from emp where nvl(comm,0) < 100;
--(10)查詢各月倒數第二天入職的員工信息select * from emp where hiredate = last_day(hiredate) - 2;
--(11)查詢工齡大于或等于10年的員工信息select * from emp where months_between(sysdate,hiredate) > (10 * 12);
--(12)查詢員工信息,要求以首字母大寫的方式顯示所有員工的姓名select empno,initcap(ename),job,mgr,hiredate,sal,comm,deptno from emp;
--(13)查詢員工名正好為6個字母的員工的信息select * from emp where length(ename) = 6;
--(14)查詢員工名字中不包含字母“S”的員工select * from emp where instr(ename,'S') > 0;
--(15)查詢員工姓名的第2個字母為“M”的員工信息select * from emp where instr(ename,'M') = 2;
--(16)查詢所有員工姓名的前3個字符select substr(ename,1,3) from emp;
--(17)查詢所有員工的姓名,如果包含字母“s”,則用“S”替換select replace(ename,'S','s') from emp;
--(18)查詢員工的姓名和入職日期,并按入職日期從先到后進行排序select ename,hiredate from emp order by hiredate asc;
--(19)顯示所有員工的姓名、工種、工資和獎金,按工種降序排序,若工種相同則按工資升序排序select ename,job,sal,comm from emp order by job desc, sal asc;
--(20)顯示所有員工姓名、入職的年份和月份,按入職日期所在的月份排序,若月份相同則按入職的年份排序select ename,to_char(hiredate,'yyyy') hiredate_year,to_char(hiredate,'mm')hiredate_monthfrom emp order by hiredate_year,hiredate_month;
--(21)查詢在2月份入職的所有員工信息select * from emp where to_char(hiredate,'mm') = '02';
--(22)查詢至少有一個員工的部門信息select d.deptno,d.dname,d.loc,e.num from dept djoin (select deptno,count(empno) num from emp group by deptno) eon d.deptno = e.deptno where num > 1;
--(23)查詢工資比SMITH員工工資高的所有員工信息select * from emp where sal > (select sal from emp where ename = 'SMITH');
--(24)查詢所有員工的姓名及其直接上級的姓名select e1.ename name,e2.ename mgr from emp e1join emp e2 on e1.mgr = e2.empno;
--(25)查詢入職日期早于其直接上級領導的所有員工信息select * from emp where empno in(select e1.empno from emp e1 join emp e2 on e1.mgr = e2.empno where e1.hiredate < e2.hiredate);
--(26)查詢所有部門及其員工信息,包括那些沒有員工的部門select * from dept d left join (select * from emp) e on d.deptno = e.deptno;
--(27)查詢所有員工及其部門信息,包括那些還不屬于任何部門的員工select * from dept d right join (select * from emp) e on d.deptno = e.deptno;
--(28)查詢所有工種為CLERK的員工的姓名及其部門名稱select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;
--(29)查詢最低工資大于2500的各種工作select job,min(sal) min_sal from emp group by job having min(sal) > 2500;
--(30)查詢平均工資低于2000旳部門及其員工信息select * from dept d join emp e on d.deptno = e.deptno where d.deptno =(select deptno from emp group by deptno having avg(sal) < 2000);
--(31)查詢在SALES部門工作的員工的姓名信息select ename from dept d join emp e on d.deptno = e.deptno where d.dname = 'SALES';
--(32)查詢工資高于公司平均工資的所有員工信息select * from emp where sal > (select avg(sal) from emp);
--(33)查詢與SMITH員工從事相同工作的所有員工信息select * from emp where job = (select job from emp where ename = 'SMITH');
--(34)列出工資等于30號部門中某個員工工資的所有員工的姓名和工資select ename,sal from emp where sal in (select sal from emp where deptno = 30);
--(35)查詢工資高于30號部門中工作的所有員工的工資的員工姓名和工資select ename,sal from emp where sal > (select max(sal) from emp group by deptno having deptno = 30);
--(36)查詢每個部門中的員工數量、平均工資和平均工作年限select count(*) num,avg(sal) avg_sal,avg(months_between(sysdate,hiredate))/12 age from emp group by deptno;
--(37)查詢各個部門的詳細信息以及部門人數、部門平均工資select d.deptno,d.dname,d.loc,a.num,a.avg_sal from dept djoin (select deptno,count(*) num,avg(sal) avg_sal,avg(months_between(sysdate,hiredate))/12 age from emp group by deptno) aon d.deptno = a.deptno;
--(38)查詢各個部門中不同工種的最高工資select deptno,job,max(sal) from emp group by deptno,job order by deptno,job;
--(39)查詢10號部門員工及其領導的信息select * from emp where deptno = 10 or mgr in (select empno from emp where deptno = 10);
--(40)查詢工資為某個部門的平均工資的員工信息select * from emp where sal in (select avg(sal) from emp group by deptno);
--(41)查詢工資高于本部門平均工資的員工的信息select e1.* from emp e1join (select deptno,avg(sal) avg_sal from emp group by deptno) e2 on e1.deptno = e2.deptnowhere e1.sal > e2.avg_sal;
--(42)查詢工資高于本部門平均工資的員工的信息及其部門的平均工資select e1.*,e2.dept_avg_sal from emp e1join (select deptno,avg(sal) dept_avg_sal from emp group by deptno) e2 on e1.deptno = e2.deptnowhere e1.sal > e2.dept_avg_sal;
--(43)查詢工資高于20號部門某個員工工資的員工的信息select * from emp where sal > any(select sal from emp where deptno = 20) order by empno;select * from emp where sal > (select min(sal) from emp where deptno = 20) order by empno;
--(44)統計各個工種的員工人數與平均工資select job,count(*),avg(sal) from emp group by job;
--(45)統計每個部門中各工種的人數與平均工資select deptno,job,count(*),avg(sal) from emp group by deptno,job order by deptno,job;
--(46)查詢工資、獎金與10號部門某員工工資、獎金都相同的員工信息select * from emp where (sal,nvl(comm,0)) in (select sal,nvl(comm,0) from emp where deptno = 10);
--(47)查詢部門人數大于5的部門的員工信息select * from emp where deptno in(select deptno from emp group by deptno having count(*) > 5);
--(48)查詢所有員工工資都大于2000的部門的信息select d.*,a.avg_sal from dept djoin (select deptno,avg(sal) avg_sal from emp group by deptno) a on d.deptno = a.deptno where avg_sal > 2000;
--(49)查詢所有員工工資都大于2000的部門的信息及員工信息select d.*,a.avg_sal,e.* from dept djoin (select deptno,avg(sal) avg_sal from emp group by deptno) a on d.deptno = a.deptnojoin emp e on d.deptno = e.deptnowhere avg_sal > 2000 order by d.deptno;
--(50)查詢所有員工工資都在2000~3000之間的部門的信息select d.* from dept djoin (select deptno,min(sal) min_sal,max(sal) max_sal from emp group by deptno) a on d.deptno = a.deptnowhere min_sal > 500 and max_sal < 3000;
--(51)查詢所有工資在2000~3000之間的員工所在部門的員工信息select * from emp where deptno in(select distinct deptno from emp where sal between 2000 and 3000);
--(52)查詢人數最多的部門信息select * from?(select d.*,a.num from dept djoin (select deptno,count(*) num from emp group by deptno) a on d.deptno = a.deptno order by num desc)where rownum <= 1;
--(53)查詢30號部門中工資排序前3名的員工信息select * from?(select * from emp where deptno = 30 order by sal desc)where rownum <=3;
--(54)查詢所有員工中工資排序在5~10名之間的員工信息select * from (select rownum n,e.* from (select * from emp order by sal desc) e) where n between 5 and 10;
--(55)向emp表中插入一條記錄,員工號為1357,員工名字為oracle,工資為2050,部門號為20,入職日期為2002年5月10日create table emp2 as select * from emp;insert into emp2(empno,ename,sal,deptno,hiredate) values(1357,'oracle',2050,20,to_date('2002-5-10','yyyy-mm-dd'));select * from emp2;
--(56)向emp表中插入一條記錄,員工名為FAN,員工號為8000,其他信息與SMITH員工的信息相同insert into emp2 select 8000,'FAN',job,mgr,hiredate,sal,comm,deptno from emp2 where ename='SMITH';select * from emp2;
--(57)將各部門員工的工資修改為該員工所在部門平均工資加1000select deptno,avg(sal) from emp2 group by deptno order by deptno;update emp2 e1 set sal = (select avg(sal) + 1000 from emp2 e2 group by deptno having e1.deptno = e2.deptno);select deptno,avg(sal) from emp2 group by deptno order by deptno;

總結

以上是生活随笔為你收集整理的Oracle 练习题P256的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。