首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle SQL中使用排名选择前10个元组

在Oracle SQL中使用排名选择前10个元组
EN

Stack Overflow用户
提问于 2010-02-26 01:02:27
回答 2查看 12.9K关注 0票数 4

我有关系讲师(ID,姓名,部门名称,薪水)。

我们作业中的问题要求我们:使用SQL中的rank函数编写一个查询,查询前10名收入最高的教师的id和姓名。

我可以使用select id, name, rank() over(order by(salary) desc) as sal from instructor order by sal对讲师进行排名

我下一步如何抓住排名前十的讲师?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-02-26 01:25:20

您的排名接近答案,但通常最好使用solution ()函数给出的值:

代码语言:javascript
复制
select id
       , name
       , sal
from (
  select id
        , name
        , sal
        , rank() over(order by(salary) desc) as sal_rank
    from instructor
  )
where sal_rank <=10
/

rownum的问题在于它会任意截断结果集。如果我们并列第十,知道这一点通常是很重要的。相反,使用ROWNUM将返回单个随机记录。

有时ROWNUM -或解析的ROW_NUMBER() -将是正确的。这取决于精确的业务需求。

票数 3
EN

Stack Overflow用户

发布于 2010-02-26 01:04:35

实际上,我是用rownum才弄明白的。

代码语言:javascript
复制
select id, name from(
  select id, name, rank() over(order by(salary) desc) as sal
    from instructor order by sal
  )
where rownum <=10

希望这对将来的人有所帮助!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2335924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档