使用rank选择Oracle SQL中的前10个元组
问题描述:
我有关系指导(ID,名称,部门名称,薪水)。使用rank选择Oracle SQL中的前10个元组
我们任务中的问题要求我们:使用SQL中的rank函数来编写一个查询来查找前10名薪水最高的指导员的ID和名称。
我就能通过select id, name, rank() over(order by(salary) desc) as sal from instructor order by sal
什么是我抓住了前10名教官下一步排名教官?谢谢。
答
我想通了其实用ROWNUM ...
select id, name from(
select id, name, rank() over(order by(salary) desc) as sal
from instructor order by sal
)
where rownum <=10
希望这可以帮助别人的未来!
答
你solution接近答案,但它通常最好使用由RANK()函数给出的值:
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() - 将是正确的。这取决于精确的业务需求。
不要忘记'DENSE_RANK()'。 – 2010-02-25 18:42:13