oracle 練習題


scott用戶下 
1.顯示emp表中員工的名字和工資
 select ename,sal from emp;

2.顯示emp表中員工的編號,名字,提成
 select empno,ename,comm from emp; 

3.顯示部門編號和部門名稱 
 select deptno,dname from dept;

4.顯示員工名字和入職日期 
 select ename,hiredate from emp;

5.顯示員工編號  名字 經理編號 
 select empno,ename,mgr from emp;

6.顯示員工編號 名字 部門編號
 select empno,ename,deptno from emp;

7.顯示工資等級  等級最低工資  等級最高工資
 select grade,losal,hisal from salgrade;
 
8.查詢名字是BLAKE的人的編號,名字,工資
 select empno,ename,sal from emp where ename='BLAKE';
 
9.查詢編號是7782的員工的編號,名字,工資,提成
 select empno,ename,sal,comm from emp where empno=7782;

10.查詢入職日期是1981-2-20的員工的名字,入職日期,部門編號
 select ename,hiredate,deptno from emp where hiredate=to_date(19810220,'YYYY-MM-DD');

11.查詢職位是銷售(SALESMAN)的人的名字,職位,入職日期 
 select ename,job,hiredate from emp where job='SALESMAN';

12.查詢部門是10的人的編號,名字,部門編號
 select empno,ename,deptno from emp where deptno=10;

13.查詢工資大於1500,並且小於2500的人的編號,名字,工資
 select empno,ename,sal from emp where sal>1500 and sal<2500; 

14.查詢工資小於2000的人的名字,工資,提成
 select ename,sal,comm from emp where sal<2000;

15.查詢提成是0或是空的人的編號,名字,提成,部門編號
  select empno,ename,comm,deptno from emp where comm is null or comm=0;
  
16.查詢工資大於1000或者部門是30的員工的編號,姓名,工資 
 select empno,ename,sal from emp where sal>1000 or deptno=30;

17.查詢部門10的部門名稱,位置等 
 select dname,loc from dept where deptno=10;

18.查詢職位(JOB)為'PRESIDENT'的員工的工資
 select sal from emp where job='PRESIDENT';
 
19.查詢有提成的員工信息 
 select * from emp where comm is not null;
 
20.查詢名字長度為4 的員工的員工編號,姓名
 select empno,ename from emp where length(ename)=4;
 
21.顯示10 號部門的所有經理('MANAGER')和20 號部門的所有職員('CLERK')的詳細信息  
 select * from emp
 where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');

22.顯示各個部門經理('MANAGER')的工資
 select deptno,sal from emp where job='MANAGER';

23.顯示佣金(COMM)收入比工資(SAL)高的員工的詳細信息
 select * from emp where nvl(comm,0)>sal;

24.檢索以S結尾的員工姓名及月收入( 月收入是工資和提成之和 ) 
 select ename,sal+nvl(comm,0) from emp where ename like '%S';

25.查詢員工姓名的第三個字母是A的員工姓名 
 select ename from emp where ename like '__A%';  

26.查詢工資不在1000到2000之間的員工的姓名和工資
 select ename,sal from emp where sal not between 1000 and 2000;
 
27. 查詢公司中沒有管理者的員工姓名及job 
 select ename,job from emp where mgr is null;
    
28.求ename列的長度,顯示員工編號,名字,長度
 select empno,ename,length(ename) 長度 from emp;      --length()
 
29.將ename轉成小寫,顯示員工編號,名字,小寫名字
 select empno,ename,lower(ename) from emp;     --lower()

30.將ename中的A,替換成ABC,顯示編號,替換前的名字,替換后的名字
 select empno,ename,replace(ename,'A','ABC') from emp;   --replace( , , )

31.取ename的第二個字符,顯示編號,名字,第二個字符
 select empno,ename,substr(ename,2,1) 第二個字符 from emp;  --substr( , , )

32.取ename的第二個字符到末尾的所有字符,顯示編號,名字,截取后的字符
 select empno,ename,substr(ename,2) from emp;          --substr( , , )

33.取ename的第三個到第五個字符,顯示編號,名字,截取后的字符
 select empno,ename,substr(ename,3,5) from emp;    --substr( , , )

34.找出ename中A第一次出現的位置,顯示編號,名字,A的位置 
 select empno,ename,instr(ename,'A') from emp;     --instr( , , )

35.從ename中第一個A的位置開始截取,取2個字符,顯示名字,截取后的字符
 select ename,substr(ename,instr(ename,'A'),2)  from emp;     --instr( , , ) substr( , , ) 
                                                                   --其中如果沒有A則從第一個位置開始截取
36.將'abc,bdc,def'變成'abc bdc def',顯示變之前的字符串,變之后的字符串
  select 'abc,bdc,def',replace('abc,bdc,def',',',' ') from  dual;      --replace( , , )
  select 'abc,bdc,def',translate('abc,bdc,def',',',' ') from  dual;      --translate( , , )

37.將'ABCDEFADE'變成'mBCDEFmDE',顯示變之前的字符串,變之后的字符串
  select 'ABCDEFADE',translate('ABCDEFADE','A','m') from dual;           --translate( , , )
  select 'ABCDEFADE',replace('ABCDEFADE','A','m') from dual;     --replace( , , )

38.將'      abcdef       '變成'abcdef',顯示變之前的字符串,變之后的字符串
 select '      abcdef       ',trim('      abcdef       ') from dual;      --trim( )

39.將'     mnop'變成'mnop',顯示變之前的字符串,變之后的字符串
 select '     mnop',ltrim('     mnop') from dual;      --ltrim( )
  
40.將'nqwd      '變成'nqwd',顯示變之前的字符串,變之后的字符串  --rtrim( )
 select 'nqwd      ',rtrim('nqwd      ') from dual;

41.將'hi    jk     mno'變成'hijkmno',顯示變之前的字符串,變之后的字符串
 select 'hi    jk     mno',translate('hi    jk     mno','a  ','b') from dual;    --translate( , , )

42.求D和d的 ascii碼.
 select 'D',ascii('D') from dual       --ascii()
 union
 select 'd',ascii('d') from dual;
 
 select * from emp;

43.將員工名字從M開始截取,顯示員工姓名和截取之后名字
  select ename,substr(ename,instr(ename,'M')) from emp;               --substr( , )  instr( , )

44.將ename中的M替換成AAA,顯示替換前后的名字
 select ename,replace(ename,'M','AAA') from emp;    --replace( , )

45.將506.9變成‘五零六點九’
 select '506.9',translate('506.9','.1234567890','點一二三四五六七八九零') from dual;       --translate( , , )
 
46. 將 'a#c12%45ABC!c*ef@89'中的除了字母和數字以外的字符都去掉
 select 'a#c12%45ABC!c*ef@89',translate( 'a#c12%45ABC!c*ef@89','ac1245ABCcef89#%!*@','ac1245ABCcef89') from dual;   --translate

47.將工資保2位小數,顯示為美元格式,顯示員工編號,姓名,工資
 select empno,ename,to_char(trunc(sal,2),'$999,999.99') from emp;

48.將員工工資顯示千分位形式,顯示員工編號,姓名,工資
 select empno,ename,to_char(sal,'999,999') from emp;

49.將員工工資增加500之后,求比原 工資增加了百分之幾,四舍五入保留兩位小數,顯示員工編號, 名字,工資,百分比(比如:20%)
 select empno,ename,sal,round(500/sal*100,2)||'%' 百分比 from emp;
     
50.查詢入職日期在1981-5-1到1981-12-31至間的所有員工信息
 select * from emp where hiredate between to_date(19810501,'YYYY-MM-DD') and to_date(19811231,'YYYY-MM-DD');
 
51.求1981你年下半年入職的員工
 select * from emp where hiredate between to_date(19810731,'YYYY-MM-DD') and to_date(19811231,'YYYY-MM-DD'); 
 
52.查詢當前月有多少天
 select to_char(sysdate,'DD') from dual;
 
53.如果工資<1000,顯示成'1級',1001至2000顯示成'2級',2001至3000顯示成'3級',其他顯示成'4級'
 select sal,case when sal<1000 then '1級' 
                   when sal<2000 then '2級'
                   when sal<3000 then '3級'
                   else '4級'
             end case 
 from emp;                          

54.如果有提成,顯示成'有提成',沒提成,顯示'沒提成'分別用case和decode
 select comm, case when nvl(comm,0)>0 then '有提成'
                     else '沒有提成'
               end case
 from emp;
 select comm,decode(nvl(comm,0),0,'沒有提成','有提成')  from emp;

 
55.如果job是PRESIDENT顯示成'老板',job是MANAGER,顯示成'經理',其他顯示成員工,分別用
  case when 和 decode 實現
  select job,case job when 'PRESIDENT' then '老板'
                        when 'MANAGER' then '經理'
                        else '員工'
              end case
  from emp;
  
  select job,decode(job,'PRESIDENT','老板','MANAGER','經理','員工') from emp;
  
56.1981年及以前入職的,顯示為'老員工',1982年及以后入職的,顯示為'新員工'
 select hiredate,case when hiredate<to_date(19810101,'YYYY-MM-DD') then '老員工'
                        else '新員工' 
                  end case
 from emp;
                        
57.隨便寫一個年份(比如:1981),判斷這個年份是不是閏年,是閏年,顯示為'閏年',否則顯示為'平年'
 select to_char(sysdate,'YYYY'),case to_date(to_char(sysdate,'YYYY')||'12'||'31','YYYY-MM-DD')-trunc(sysdate,'YYYY')+1 when 365 then '平年'
                                                                                                                             else '閏年'
                                  end case
 from dual

58.emp表中hiredate,求星期,如果是星期一,顯示為'周一',是星期二,顯示為'周二',依次類推,星期日顯示為'周日'
 select hiredate,decode(to_char(hiredate,'day'),'星期一','周一','星期二','周二','星期三','周三','星期四','周四','星期五','周五','星期六','周六','星期日','周日')
 from emp;
  
scott

59.列出至少有一個雇員的所有部門
 select deptno,count(*)
 from emp
 group by deptno 
 having count(*)>=1;

60.列出薪金比‘SMITH’多的所有雇員
 select * from emp where sal>(select sal from emp where ename='SMITH');

61.列出所有雇員的姓名及其直接上級的姓名
 select a.ename,b.ename
 from emp a inner join emp b on a.mgr=b.empno;

62.列出入職日期早於其直接上級的所有雇員
  select a. *
  from emp a inner join emp b on a.mgr=b.empno
  where a.hiredate<b.hiredate

63.列出所有‘CLERK’(辦事員)的姓名及其部門名稱
 select a.ename,b.dname
 from emp a inner join dept b on a.deptno=b.deptno
 where a.job='CLERK';
  
64.列出薪金高於公司平均水平的所有雇員
 select * 
 from emp 
 where sal>(select avg(sal) from emp);
  
65.列出與‘SCOTT’從事相同工作的所有雇員
  select * from emp where job=(select job from emp where ename='SCOTT');
  
66.列出某些雇員的姓名和佣金,條件是他們的薪金等於部門30中任何一個雇員的薪金
 select ename,sal from emp where sal in (select sal from emp where deptno=30 );

67.列出某些雇員的姓名和佣金,條件是他們的薪金高於部門30中所有雇員的薪金
  select ename,sal from emp where sal>all(select sal from emp where deptno=30 );

68.列出每個部門的編號以及該部門中雇員數量、平均工資和平均服務期限
 select b.deptno,count(a.empno),avg(a.sal),avg(months_between(sysdate,hiredate)/12) year
 from emp a inner join dept b on a.deptno=b.deptno
 group by b.deptno
 
69.列出所有雇員的雇員名稱,部門名稱和薪金
 select a.ename,b.dname, a.sal
 from emp a inner join dept b on a.deptno=b.deptno;

70.列出從事同一種工作但屬於不同部門的雇員數量
 select job,deptno,count(*)
 from emp
 group by job,deptno
 order by job; 
 
71.列出各種類別工作的最低工資
  select min(sal) from emp group by job
  
72.列出各個部門的MANGER (經理)的最低薪金
  select min(sal) 
  from emp
  where job='MANAGER'
  group by deptno;

73.列出按年薪排序的所有雇員的年薪
 select sal*12 ysal
 from emp 
 order by ysal desc

74.列出薪金水平處於第四位的雇員
 select empno,ename
 from (select rownum num,empno,ename
         from emp
         order by sal desc)
 where num=4
   
75.不用組函數求出薪水的最大值
 select sal
 from (select sal  from  emp order by sal desc)
 where rownum<2

76.查詢員工的基本信息,附加其上級的姓名 
 select a.*,b.ename from emp a inner join emp b on a.mgr=b.empno;

77.顯示工資比‘ALLEN’高的所有員工的姓名和工資
 select ename,sal from emp where sal>(select sal from emp where ename='ALLEN');

78.顯示與‘SCOTT’從事相同工作的員工的詳細信息
 select * from emp where job=(select job from emp where ename like 'SCOTT');

79.顯示與30部門‘MARTIN’員工工資相同的員工的姓名和工資
 select ename,sal
 from emp 
 where sal=( select sal from emp where deptno=30 and ename='MARTIN');

80.查詢所有工資高於平均工資(平均工資包括所有員工)的銷售人員(‘SALESMAN’)
 select *
 from emp
 where sal>(select avg(sal) from emp ) and job='SALESMAN';

81.顯示所有職員的姓名及其所在部門的名稱和工資
 select a.ename,b.dname,a.sal
 from emp a inner join dept b on a.deptno=b.deptno;

82.查詢在研發部(‘RESEARCH’)工作員工的編號,姓名,工作部門,工作所在地
 select a.empno,a.ename,b.dname,b.loc
 from emp a inner join dept b on a.deptno=b.deptno
 where b.dname='RESEARCH';

83.查詢各個部門的名稱和員工人數
 select b.dname,count(*)
 from emp a inner join dept b on a.deptno=b.deptno
 group by b.dname; 

84.查詢各個職位員工工資大於平均工資(平均工資包括所有員工)的人數和員工職位
 select job,count(*)
 from emp
 where sal>(select avg(sal) from emp )
 group by job;

85.查詢工資相同的員工的工資和姓名
 select sal,ename
 from emp
 where sal in (select sal
                 from emp
                 group by sal
                 having count(*)>=2)

86.查詢工資最高的3名員工信息
 select *
 from (select * from emp order by sal desc)
 where rownum<4

87.求入職日期相同的(年月日相同)的員工
 select a.empno
 from emp a inner join emp b on a.hiredate=b.hiredate
 group by a.empno
 having count(a.empno)>=2
 
 select * from emp where hiredate=( select hiredate
 from emp 
 group by hiredate
 having count(empno)>=2)
 

88.查詢每個員工的信息及工資級別
 select a.empno,a.ename,b.grade
 from emp a inner join salgrade b on a.sal between losal and hisal;

89.查詢工資最高的第6-10名員工
  select empno,ename,sal
  from (select rownum nu,empno,ename,sal from emp order by sal desc)
  where nu between 6 and 10;
 
90查詢各部門工資最高的員工信息
 select *
 from emp
 where sal in (select max(sal) from emp group by deptno)
 
91.查詢出有3個以上下屬的員工信息
 select * from emp where empno in (select mgr from emp group by mgr having count(*)>=3)
 
92.查詢所有大於本部門平均工資的員工信息
 select *
 from emp a inner join (select deptno,avg(sal) ag from emp group by deptno) b on a.deptno=b.deptno
 where a.sal>b.ag;

93.查詢平均工資最高的部門信息
  select * from dept where deptno=(
  select deptno
  from (select deptno,avg(sal) av from emp group by deptno order by avg(sal) desc)
  where rownum<2);

94.查詢部門平均工資大於所有人平均工資的部門信息
 select * from dept where deptno in (
 select deptno from emp group by deptno having avg(sal)>(select avg(sal) from emp)); 

95.查詢沒有員工的部門信息
 select * from dept where deptno not in (select deptno from emp)

96.哪些部門的人比90部門人數多
 with dep as (select department_id deptno,count(*) cou from employees group by department_id)
 select deptno
 from dep where cou>(select cou from dep where deptno=90);

97.Den(first_name)、Ernst(LAST_NAME)的領導分別是誰
 select a.first_name,b.first_name 
 from employees a inner join employees b on a.manager_id=b.employee_id
 where a.first_name='Den' or a.last_name='Ernst';
 
98.Den(first_name)、Ernst(LAST_NAME)的下屬分別有誰
 select b.first_name,a.first_name
 from employees a inner join employees b on a.manager_id=b.employee_id
 where b.first_name='Den' or b.last_name='Ernst';
 
99.列出在同一部門共事,入職日期晚但工資高於其他同事的員工:名字  工資 入職日期
 select a.first_name,a.salary,a.hire_date
 from employees a inner join employees b on a.department_id=b.department_id
 where a.hire_date>b.hire_date and a.salary>b.salary;

100.Finance 部門有哪些職位
 select a.job_id
 from employees a inner join departments b on a.department_id=b.department_id
 where b.department_name='Finance';

101.查詢入職日期比10部門任意一個員工晚的員工姓名,入職日期,不包括10部門員工
 select *
 from emp
 where hiredate>all(select hiredate from emp where deptno=10) ;
  
102.查詢比自己職位平均工資高的員工姓名,職位,部門名稱,職位平均工資
 select a.ename,a.job,c.dname,b.av
 from emp a inner join (select job,avg(sal) av from emp group by job) b on a.job=b.job
            inner join dept c on a.deptno=c.deptno
 where a.sal>b.av;
   
103.查詢不是經理的員工姓名
 select ename
 from emp
 where empno not  in (select distinct nvl(mgr,0) from emp ); 

104.查詢入職日期最早的前五名員工姓名,入職日期
 select ename,hiredate
 from (select ename,hiredate from emp order by hiredate asc)
 where rownum<6;
  
105.查詢工作在CHICAGO並且入職日期最早的前兩名員工姓名,入職日期
 select name,hrdate
 from (select a.ename name,a.hiredate hrdate
        from emp a inner join dept b on a.deptno=b.deptno
        where b.loc='CHICAGO'
        order by a.hiredate asc)
 where rownum<3
 
106.查詢工資高於編號為7782的員工工資,並且和7369號員工從事相同工作的員工的編號
 select empno
 from emp
 where sal>(select sal from emp where empno=7782)
        and job=(select job from emp where empno=7369);

107.查詢工資最高的員工姓名和工資
 select ename,sal
 from (select ename,sal from emp order by sal desc)
 where rownum=1;

108.查詢部門最低工資高於30號部門最低工資的部門編號,名稱及部門最低工資
  with temp as (select deptno,min(sal) min from emp group by deptno)
  select a.deptno,a.dname,b.min
  from dept a inner join temp b on a.deptno=b.deptno
  where b.min<(select min from temp where deptno=30);

109.查詢員工工資為其部門最低工資的員工的編號和姓名及工資
 select empno,ename,sal
 from emp 
 where (deptno,sal) in (select distinct deptno,min(sal) from emp group by deptno);
 
110.顯示經理是KING的員工姓名,工資
 select ename,sal
 from emp
 where mgr=(select empno from emp where ename='KING');
 
111.顯示比員工SMITH參加工作時間晚的員工姓名,工資,參加工作時間
 select ename,sal,hiredate
 from emp
 where hiredate>(select hiredate from emp where ename='SMITH');

112.使用子查詢的方式查詢哪些職員在NEW YORK 工作
 select * from emp where deptno=(select deptno from dept where LOC='NEW YORK');
 
113.寫一個查詢顯示和員工SMITH工作在同一個部門的員工姓名,雇佣日期,查詢結果排除SMITH
 select ename,hiredate
 from emp
 where deptno=(select deptno from emp where ename='SMITH') and ename!='SMITH';

114.查詢顯示其工資比全體職員平均工資高的員工編號姓名
 select empno,ename
 from emp
 where sal>(select avg(sal) from emp ) 

115.顯示所有工作在RESEARCH部門的員工姓名工資
 select ename,sal
 from emp 
 where deptno=(select deptno from dept where dname='RESEARCH');

116.要求部門的平均工資高於20部門平均工資的平均工資
  with temp as (select deptno,avg(sal) av from emp group by deptno)
  select avg(av)
  from temp where av>(select av from temp where deptno=20);
 
117.查詢大於自己部門平均工資的員姓名,工資,所在部門平均工資
 with temp as (select deptno,avg(sal) av from emp group by deptno)
 select a.ename,a.sal,b.av
 from emp a inner join temp b on a.deptno=b.deptno
 where a.sal>b.av
 
118.列出至少有一個雇員的所有部門
  select deptno
  from emp
  group by deptno
  having count(*)>=1;
 
119.列出薪金比SMITH多的所有雇員
 select * from emp where sal>(select sal from emp where ename='SMITH');

120.列出入職日期早於其直接上級的所有雇員
 select *
 from emp a inner join emp b on a.mgr=b.empno
 where a.hiredate<b.hiredate;
 
121.顯示部門名稱和人數
 with temp as (select deptno,count(*) cou from emp group by deptno)
 select a.dname,nvl(b.cou,0)
 from dept a left join temp b on a.deptno=b.deptno;
 
122.顯示每個部門的最高工資的員工
 select *
 from emp
 where (deptno,sal) in (select deptno,max(sal) from emp group by deptno)

123.顯示出和員工號7369部門相同的員工姓名,工資
 select ename,sal
 from emp
 where deptno=(select deptno from emp where empno=7369);

124.顯示出和員工姓名中包含W的員工相同部門的員工姓名
 select ename
 from emp
 where deptno in (select deptno from emp where ename like '%W%')
 
125.顯示出工資大於平均工資的員工姓名,工資
 select ename,sal
 from emp
 where sal>(select avg(sal) from emp);
 
126.顯示比工資最高的員工參加工作時間晚的員工姓名,參加工作時間
 select ename,hiredate
 from emp
 where hiredate>(select hiredate from emp where sal=(select max(sal) from emp));
 
127.顯示出平均工資最高的部門的平均工資及部門名稱
 with temp as (select deptno,avg(sal) av from emp group by deptno order by avg(sal) desc),
       tmp as (select deptno,av from temp where rownum=1)
 select  a.dname,b.av
 from dept a inner join tmp b on a.deptno=b.deptno
 
128、找出獎金高於工資的員工 
 select * from emp where nvl(comm,0)>sal;

129、找出部門10中既不是經理也不是普通員工,而且工資大於等於2000的員工
 select *
 from emp
 where deptno=10 and job not in ('MANAGER','CLERK') and sal>2000;

130、顯示雇員姓名,根據其服務年限,將最老的雇員排在最前面 
 select ename,months_between(sysdate,hiredate)/12 year
 from emp 
 order by year desc;
 
131.顯示2008年的8月8日為星期幾
 select to_char(to_date(20080808,'YYYY-MM-DD'),'day') from dual;

132.將入職日期顯示為如下格式:  23-01-2018 
 select empno,to_char(hiredate,'DD-MM-YYYY') from emp

133.取出每位員工在分別在哪個季度入職
 select empno,ename,to_char(hiredate,'q') from emp

134.顯示每位員工在本月哪周入職
 select ename,to_char(hiredate,'w') from emp;

135.顯示日期 '2018-01-12 12:13:14'
 select to_date(20180112,'YYYY-MM-DD')+12/24+13/24/60+14/24/60/60 from dual;
 
136、要求查詢出雇員的編號,姓名,工作,但是顯示的格式:編號是:7369的雇員,姓名是:SMITH,工作是:CLERK(emp表中所有數據,只顯示一列)
 select '員工編號是:'||empno||',雇員姓名是:'||ename||',工作是:'||job from emp
 
137、要求查詢基本工資不大於1500,同時不可以領取獎金的雇員信息
 select * from emp where sal<=1500 and comm is null;

138、查詢出名稱中第2位字母出現在職位中,任意位置的員工信息
 select a.*
 from emp a inner join (select empno,instr(job,substr(ename,2,1)) nu from emp) b on a.empno=b.empno
 where b.nu!=0;

139、時間是’2018-10-26’中,顯示當天所在周的周一是幾號,這天是一年的多少周,是當前月中的第幾周
 select to_date(20181026,'YYYY-MM-DD'),trunc(to_date(20181026,'YYYY-MM-DD'),'ww'),to_char(to_date(20181026,'YYYY-MM-DD'),'ww'),to_char(to_date(20181026,'YYYY-MM-DD'),'w') from dual;

140、寫出將時間‘2018-10-26’顯示成‘2018-10-29 12-13-14’ 需要加幾天
 select to_date(20181029,'YYYY-MM-DD')+12/24+13/24/60+14/24/60/60-to_date(20181026,'YYYY-MM-DD') FROM DUAL;

141、顯示員工表中,員工編號是奇數的員工信息 或 工資是奇數但是無獎金的員工信息
 select * from emp
 where mod(empno,2)=1 or (mod(sal,2)=1 and comm is null);

142、要求查詢出每個雇員的姓名,工資,部門名稱,工資在公司的等級(salgrade),及其領導的姓名及工資等級
 with temp as (select a.empno empno,a.ename ename,a.mgr mgr,a.sal sal,c.dname dname,b.grade grade
               from emp a inner join salgrade b on a.sal between losal and hisal
                           inner join dept c on a.deptno=c.deptno)
 select a.ename,a.sal,a.dname,a.grade,b.ename,b.grade
 from temp a inner join temp b on a.mgr=b.empno;

143、按工資降序求第5到10位員工的姓名及工資
 select name,sal
 from (select rownum num,ename name,sal from ( select ename,sal from emp order by sal desc))
 where num between 5 and 10;

 
————————————————
版權聲明:本文為CSDN博主「BoJie0912」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/BoJie_1/article/details/88074759


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM