我有關係指導(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名教官下一步排名教官?謝謝。
我有關係指導(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