题是这样的
一个表有2个字段 一个是 姓名 另一个是 \
   成绩
我 80
你 79
他 79
它 20最后查询出 2列 一个是姓名 另一个是 
   排名
我 1
你 2
他 2
它 4.。 

解决方案 »

  1.   

    select 姓名,rank() over(order by 成绩desc) 排名 from table;
      

  2.   


    create table trank (name varchar2(30), score number);insert into trank values ('Me', 80);
    insert into trank values ('You', 79);
    insert into trank values ('He', 79);
    insert into trank values ('It', 20);select name, rank() over (order by score desc) as "rank"
    from trank;NAME                                                rank
    --------------------------------------------- ----------
    Me                                                     1
    You                                                    2
    He                                                     2
    It                                                     4
      

  3.   

    SQL> create table test
      2  (
      3    姓名 varchar2(8),
      4    成绩 number
      5  );表已创建。SQL> insert into test
      2  select '我',80 from dual
      3  union
      4   select '你',79 from dual
      5  union
      6  select '他',79 from dual
      7  union
      8  select '它',20 from dual;已创建4行。SQL> commit;提交完成。SQL> select * from test;姓名           成绩
    -------- ----------
    你               79
    他               79
    它               20
    我               80
    SQL> select 姓名,rank() over(order by 成绩 desc) 排名 from test;姓名           排名
    -------- ----------
    我                1
    你                2
    他                2
    它                4SQL>
      

  4.   

    select 姓名,rank() over(order by 成绩) 排名 from 表名;
      

  5.   

    考查oracle的olap函数,我面试的时候就被这种问题问倒过
      

  6.   

    排列(rank())函数。这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后根据某种排序方式对这个集合内的元素进行排列的能力.