row_number() over,rank() over,dense_rank() over的區別

THANK_DBA發表於2013-12-04

已知已經建立表emp

select * 
from(select deptno,ename,sal,
row_number() over(partition by deptno order by sal desc) rn,
rank() over(partition by deptno order by sal desc) rk, 
  dense_rank() over(partition by deptno order by sal desc) drk 
from emp)  where drk<=3;  
oracle比較函式 decode/case when~~~4種去重方法~~~去重中的統計函式

由此結論:
rank()跳躍排序,比如有兩個第1名時接下來就是第3名(同樣是在各個分組內)
dense_rank()連續排序,比如有兩個第1名時仍然跟著第2名。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29366942/viewspace-1062238/,如需轉載,請註明出處,否則將追究法律責任。

相關文章