select b.* 
from
    (
      select ROWNUM cnt,t.*
      from EMPXXX t
      order by 工资 DESC
     ) b
 where b.cnt<=3

解决方案 »

  1.   

    b.工号,b.姓名,b.工资
    --->
    b.*
      

  2.   

    select  b.工号,b.姓名,b.工资
    from
        (
          select  t.*
          from EMPXXX t
          order by 工资 DESC
         ) b
     where ROWNUM<=3
      

  3.   

    同意楼上的兄弟的意见呀!select  b.工号,b.姓名,b.工资
    from
        (
          select  t.*
          from EMPXXX t
          order by 工资 DESC
         ) b
     where ROWNUM<=3
      

  4.   

    select top 3 工号,姓名,工资
    from EMPXXX  order by 工资 DESC
        
      

  5.   

    select A.工号,A.姓名,A.工资 from EMPXXX A, (SELECT MAX(工资) MAXSALARY FROM EMPXXX WHERE ROWNUM < 4) B WHERE A.工资 = MAXSALARY
      

  6.   

    重写
    select A.工号,A.姓名,A.工资 from EMPXXX A, (SELECT MAX(工资) MAXSALARY FROM EMPXXX WHERE ROWNUM < 4) B WHERE A.工资 = MAXSALARY order by 工资 desc
      

  7.   

    select top 3 工号,姓名,工资
    from EMPXXX
    order by 工资 desc
      

  8.   

    用RANK() OVER吧,这是用来排名的分析函数,可以处理前X高的数据,比如100,100,99,99,96,96这是前三名
      

  9.   


    --只得到3名员工
    select  工号,姓名、工资 from   EMPXXX  where rownum <4  order by 工资 desc;
    --得到包括工资相等的并列的员工
     select  工号,姓名、工资
      from   EMPXXX  
     where  工资 in  
                   ( select  工资 
                       from  EMPXXX 
                      where  rownum <4  
                   order by  工资 desc) ;