求一sql

dxb_828 2007-03-21 08:49:34
有如下数据
人员 序号 成绩
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的数据要求按序号从小到大排列

...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyf333 2007-03-22
  • 打赏
  • 举报
回复
select peo,id,grade from (select peo,id,grade from aaa where peo =1 order by id desc)
where rownum <= 5

union all
select peo,id,grade from (select peo,id,grade from aaa where peo =2 order by id desc)
where rownum <= 5

union all
select peo,id,grade from (select peo,id,grade from aaa where peo =3 order by id desc)
where rownum <= 5

不怎么样,不过结果是正确的
dxb_828 2007-03-22
  • 打赏
  • 举报
回复
我是oracle数据库,里面有row_number()函数吗,这个还第一个报地提示一样
jiazheng 2007-03-22
  • 打赏
  • 举报
回复
select * from (select *,row_number() over(partition by 人員 order by 序號 desc) rk from table1)t
where t.rk<=5
dxb_828 2007-03-22
  • 打赏
  • 举报
回复
我把你上面sql中的字段相应改成我表中的字段,为什么会提示未找到预期的from?
jiazheng 2007-03-22
  • 打赏
  • 举报
回复
select * from (select *,rownumber() over(partition by 人員 order by 序號 desc) rk from table1)t
where t.rk<=5
sysdba 2007-03-21
  • 打赏
  • 举报
回复
learning
dxb_828 2007-03-21
  • 打赏
  • 举报
回复
也就是求出每个id序号最大的5条

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧