• 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

  • 相关阅读:
    SQLServer学习笔记系列1
    结束回忆的2014,带着精彩奔向2015!
    sql重置自增长
    回首一年的骚动岁月
    IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0
    Javascript学习笔记1
    C#基础回顾(三)—索引器、委托、反射
    C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱
    C#基础回顾(一)—C#访问修饰符
    SQL连接
  • 原文地址:https://www.cnblogs.com/linyu51/p/12830403.html
Copyright © 2020-2023  润新知