Oracle怎么书写sql server中top 3之类的sql(就是成绩前三名的学生之类需求)

wangjiamin 2005-04-12 10:17:40
谢谢了
...全文
360 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzszp 2005-04-28
  • 打赏
  • 举报
回复
排名无重复

SQL> select rid,ename,job,sal from (
2 select ename,job,sal,row_number() over(order by sal desc) rid from emp
3 ) t
4 where t.rid<=3;

RID ENAME JOB SAL
---------- ---------- --------- ----------
1 KING PRESIDENT 5000
2 SCOTT ANALYST 3000
3 FORD ANALYST 3000

SQL>
沝林 2005-04-28
  • 打赏
  • 举报
回复
select * (select rank() over(order by score desc) rank ,t1.* from t1) where rank < 7
结果:
rank name score
1 a 100
2 b 99
2 c 99
2 d 99
5 e 98
6 f 97

select * (select DENSE_RANK() over(order by score desc) rank ,t1.* from t1) where rank < 5
结果:
rank name score
1 a 100
2 b 99
2 c 99
2 d 99
3 e 98
4 f 97


沝林 2005-04-28
  • 打赏
  • 举报
回复
忘了前3名应该是 order by score desc
沝林 2005-04-28
  • 打赏
  • 举报
回复
这样应该可以
select * (select rank() over(order by score) rank ,t1.* from t1) where rank < 4
lingbo_wx 2005-04-27
  • 打赏
  • 举报
回复
up
ziffle 2005-04-27
  • 打赏
  • 举报
回复
引用:
上边说的不太妥当,如果第三名的成绩有相同的多个人,那应该怎么样呢?
正确的办法应该是先获得rownum=3的成绩,然后把所有成绩大于这个成绩的都列出来才是正解

情况1:前三名都是100fen,那么前三名就是前三名就是并列第一,也就是千三名。
情况2:第一名是100,第二三名都是98,那么第一名是100,并列2名,前三名都有了。
情况3:第一名100,第二名98,第三名95 第四名95 那么前三名应该是四个人,三名和四名并列第三。.................这种情况是上头最不爱看到的,发奖品超出了,呵呵。



tangtangno1 2005-04-26
  • 打赏
  • 举报
回复
上边说的不太妥当,如果第三名的成绩有相同的多个人,那应该怎么样呢?
正确的办法应该是先获得rownum=3的成绩,然后把所有成绩大于这个成绩的都列出来才是正解
wssmax 2005-04-26
  • 打赏
  • 举报
回复
学习!!!!!
honey_y 2005-04-26
  • 打赏
  • 举报
回复
select * from t1 where 成绩 >any(select 成绩 from (select * from t1 order by 成绩 desc) where rownum<4)
hhh2000mmm 2005-04-26
  • 打赏
  • 举报
回复
select *
from t1
where grade > =( select grade
from (select grade
from t1 t
order by grade)
where rownow=3);
rolandzhang 2005-04-12
  • 打赏
  • 举报
回复
select * from (select * from t1 order by score desc) t where rownum<4
LGQDUCKY 2005-04-12
  • 打赏
  • 举报
回复
先排序,在取rownum<4


select * from (select * from 表名 order by 成绩 desc) where rownum<4


zhaokeke2004 2005-04-12
  • 打赏
  • 举报
回复
rownum < 4
skyboy0720 2005-04-12
  • 打赏
  • 举报
回复
so easy~
nebulaly 2005-04-12
  • 打赏
  • 举报
回复
rank和dense_rank函数
ern 2005-04-12
  • 打赏
  • 举报
回复
hehe 这么经典的问题还是找找精华区吧
可乐筏斗 2005-04-12
  • 打赏
  • 举报
回复
select * from (select * from tablename order by 成绩 desc) where rownum<4

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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