PERCENT_RANK


1. percent_rank() over (order by .....)
返回某列或某列組合后每行的百分比排序
如下:
with cte as
(
  SELECT ROWNUM as n
  FROM DUAL 
  CONNECT BY ROWNUM <= 10
)
select n,percent_rank() over (order by n) as prk
from cte
;
結果如下:

 

圖片

 

 PRK為每個N值的相對位置的百分比,該結果看起來會有些奇怪.10個數中的第2個數應該是排在20%才對,但卻不是一個整數.

其實內部的邏輯為:

將n進行排序,注意第一位是0而不是1: 

 

圖片

 然后用它們的序號除以最大的序號則得到上述的結果.

 

2.percent_rank(....) within group ....

 

用來求某一個數在一個集合中的對應位置百分比:

 

with cte as
(
  SELECT ROWNUM as n
  FROM DUAL 
  CONNECT BY ROWNUM <= 10
)
select percent_rank(8) within group (order by n) as prk
from cte
;

 

結果:

 PRK
0.7 

這個是如何得到的呢?

是將 (8-1)/10 和第一個例子有些區別.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM