有如下数据
人员   序号   成绩
001     1      12
001     2      11
001     3      121
001     4      124
001     5      122
001     6      123
002     1      13
002     2      132
002     3      132
002     4      15
002     5      156
003     1      55
003     2      55
003     3      55
003     4      55
003     5      55
003     6      55
003     7      55
003     8      55
如何能求出这些id中按序号升序排列后的后5条数据即001的从2-6 ,002的从1-5,003的从4-8的数据要求按序号从小到大排列

解决方案 »

  1.   

    select peo,id,grade from (select peo,id,grade from aaa  where peo =1 order by id desc)
    where rownum <= 5union all
    select peo,id,grade from (select peo,id,grade from aaa  where peo =2 order by id desc)
    where rownum <= 5union all
    select peo,id,grade from (select peo,id,grade from aaa  where peo =3 order by id desc)
    where rownum <= 5不怎么样,不过结果是正确的
      

  2.   

    select * from (select *,rownumber() over(partition by 人員 order by 序號 desc) rk from table1)t
    where t.rk<=5
      

  3.   

    我把你上面sql中的字段相应改成我表中的字段,为什么会提示未找到预期的from?
      

  4.   

    select * from (select *,row_number() over(partition by 人員 order by 序號 desc) rk from table1)t
    where t.rk<=5
      

  5.   

    我是oracle数据库,里面有row_number()函数吗,这个还第一个报地提示一样