Oracle常用分析函式

hky87發表於2010-04-21
RANK 
 rank() over(partition by ... order by ...) 
根據order by子句中表示式的值,從查詢返回的每一行,計算它們與其它行的相對位置。組內的資料按order by子句排序,然後給每一行賦一個號,從而形成一個序列,該序列從1開始,往後累加。每次order by表示式的值發生變化時,該序列也隨之增加。有同樣值的行得到同樣的序號(認為NULL是相等的)。如果兩行的確得到同樣的排序,則序號將隨後跳躍。若兩行序號為1,則沒有序號2,序列將給組中的下一個行分配值3,dense_rank則沒有任何跳躍

select deptno,EMPNO,ENAME ,sal,

rank() over(partition by deptno order by empno) seq 

from emp;

    DEPTNO      EMPNO ENAME             SAL        SEQ

---------- ---------- ---------- ---------- ----------

        10       1000 JJ               3000          1

        10       1000 xx                             1

        10       7781                                3

        10       7781                                3

        10       7781 CLARK          2572.5          3

        10       7782 CLARK            2450          6

        10       7839 KING             5000          7

        10       7934 MILLER           1300          8

        20       7566 JONES            2975          1

        20       7788 SCOTT            3000          2

        20       7876 ADAMS            1100          3

DENSE_RANK
select deptno,EMPNO,ENAME ,sal,

dense_rank() over(partition by deptno order by empno) seq 

from emp;

    DEPTNO      EMPNO ENAME             SAL        SEQ

---------- ---------- ---------- ---------- ----------

        10       1000 JJ               3000          1

        10       1000 xx                             1

        10       7781                                2

        10       7781                                2

        10       7781 CLARK          2572.5          2

        10       7782 CLARK            2450          3

        10       7839 KING             5000          4

        10       7934 MILLER           1300          5

        20       7566 JONES            2975          1

        20       7788 SCOTT            3000          2

        20       7876 ADAMS            1100          3

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

相關文章