有人能解釋一下 Oracle SQL 中 Percent_Rank() 背后的數學原理嗎?
SELECT ID, principal_disbursed, DUE_DATE, CREDIT_OFFICER,
PERCENT_RANK() OVER (ORDER BY principal_disbursed)
FROM TABLE1
我需要了解在后臺運行的計算。
| ID | principal_disbursed | 本金償還 | 到期日 | 還款日期 | 信用官 |
|---|---|---|---|---|---|
| 1 | 334 美元 | 334 美元 | 2017 年 12 月 10 日 | 2017 年 10 月 17 日 | 約翰 |
| 2 | 184 美元 | 184 美元 | 2018 年 10 月 11 日 | 20/10/2018 | 瑪麗亞 |
| 3 | 417 美元 | 417 美元 | 2017 年 8 月 18 日 | 2017 年 8 月 24 日 | 瑪麗亞 |
| 4 | 500 美元 | 500 美元 | 2017 年 4 月 8 日 | 2017 年 7 月 14 日 | 瑪麗亞 |
| 5 | 250 美元 | 250 美元 | 2017 年 4 月 8 日 | 2017 年 6 月 8 日 | 約翰 |
uj5u.com熱心網友回復:
這是一個可能會給您提示的示例。我已經洗掉了日期。
with data(id, principal_disbursed, principal_repaid, credit_officer) as (
select 1, 334, 334,'John' from dual union all
select 2, 184, 184,'Maria' from dual union all
select 3, 417, 417,'Maria' from dual union all
select 4, 500, 500,'Maria' from dual union all
select 5, 250, 250,'John' from dual
)
,cnt as (
select count(*)-1 cnt
from data
)
,one as (
SELECT ID, principal_disbursed, CREDIT_OFFICER
from data
order by principal_disbursed
)
select one.*, case when rownum=1 then 0 else (rownum-1)/(select cnt from cnt) end
from one
;
這與:
with data(id, principal_disbursed, principal_repaid, credit_officer) as (
select 1, 334, 334,'John' from dual union all
select 2, 184, 184,'Maria' from dual union all
select 3, 417, 417,'Maria' from dual union all
select 4, 500, 500,'Maria' from dual union all
select 5, 250, 250,'John' from dual
)
SELECT ID, principal_disbursed, CREDIT_OFFICER,
PERCENT_RANK() OVER (ORDER BY principal_disbursed)
FROM data
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472549.html
上一篇:oracle觸發例外
下一篇:在Where子句中的Oracle日期給我這個錯誤ORA-00932:不一致的資料型別:預期的NUMBER得到了DATE
