1.rank函數
rank計算一組值的排名,返回數字類型。排名可能是不連續。如果有5人,其中有2個人排名第一,則rank返回的排名結果為:1 1 3 4 5。 作為一個彙總函式,返回虛設項目列在樣表中的排名。 作為一個解析函數,返回每一個的排名。 1.1彙總函式文法
1.2解析函數文法
1.3彙總函式的例子
計算假定薪水為2000的員工在樣表中的排名。
SQL> select rank(2000) within group(order by e.sal desc) "Rank"
2 from emp e;
Rank
----------
7
假定薪水為2000的員工,按照薪水從高到低在樣表中排第7名。
1.4解析函數的例子
按照薪水從高到低進行排名:
SQL> select e.ename, e.sal, rank() over(order by e.sal desc) "Rank" from emp e;
ENAME SAL Rank
---------- --------- ----------
KING 5000.00 1
FORD 3000.00 2
SCOTT 3000.00 2
JONES 2975.00 4
BLAKE 2850.00 5
CLARK 2450.00 6
ALLEN 1600.00 7
TURNER 1500.00 8
MILLER 1300.00 9
WARD 1250.00 10
MARTIN 1250.00 10
ADAMS 1100.00 12
JAMES 950.00 13
SMITH 800.00 14
薪水為3000重複,並列排名第2,跳過第3.
在部內進行薪水從高到低的排名:
SQL> select e.ename,
2 e.sal,
3 e.deptno,
4 rank() over(partition by e.deptno order by e.sal desc) "Rank"
5 from emp e;
ENAME SAL DEPTNO Rank
---------- --------- ------ ----------
KING 5000.00 10 1
CLARK 2450.00 10 2
MILLER 1300.00 10 3
SCOTT 3000.00 20 1
FORD 3000.00 20 1
JONES 2975.00 20 3
ADAMS 1100.00 20 4
SMITH 800.00 20 5
BLAKE 2850.00 30 1
ALLEN 1600.00 30 2
TURNER 1500.00 30 3
MARTIN 1250.00 30 4
WARD 1250.00 30 4
JAMES 950.00 30 6
2.dense_rank函數
dense_rank計算一組值的排名,該排名是連續整數從1開始。如果有5人,其中有2個人排名第一,則rank返回的排名結果為:1 1 2 3 4。 作為一個彙總函式,返回虛設項目列在樣表中的排名。 作為一個解析函數,返回每一個的排名。 2.1彙總函式文法
2.2解析函數文法
2.3彙總函式的例子
計算假定薪水為2000的員工在樣表中的排名。
SQL> select dense_rank(2000) within group(order by e.sal desc) "Rank"
2 from emp e;
Rank
----------
6
假定薪水為2000的員工,按照薪水從高到低在樣表中排第7名。
2.4解析函數的例子
按照薪水從高到低進行排名:
SQL> select e.ename,
2 e.sal,
3 dense_rank() over(order by e.sal desc) "Rank"
4 from emp e;
ENAME SAL Rank
---------- --------- ----------
KING 5000.00 1
FORD 3000.00 2
SCOTT 3000.00 2
JONES 2975.00 3
BLAKE 2850.00 4
CLARK 2450.00 5
ALLEN 1600.00 6
TURNER 1500.00 7
MILLER 1300.00 8
WARD 1250.00 9
MARTIN 1250.00 9
ADAMS 1100.00 10
JAMES 950.00 11
SMITH 800.00 12
有兩個1250並列排名第8,接著1100是第9。排名是連續是連續的。
在部內進行薪水從高到低的排名:
SQL> select e.ename,
2 e.sal,
3 e.deptno,
4 dense_rank() over(partition by e.deptno order by e.sal desc) "Rank"
5 from emp e;
ENAME SAL DEPTNO Rank
---------- --------- ------ ----------
KING 5000.00 10 1
CLARK 2450.00 10 2
MILLER 1300.00 10 3
SCOTT 3000.00 20 1
FORD 3000.00 20 1
JONES 2975.00 20 2
ADAMS 1100.00 20 3
SMITH 800.00 20 4
BLAKE 2850.00 30 1
ALLEN 1600.00 30 2
TURNER 1500.00 30 3
MARTIN 1250.00 30 4
WARD 1250.00 30 4
JAMES 950.00 30 5
20部門有兩個3000並列排名第一,接著2975是第二。排名是連續是連續的。