窗口分析函数_17_计算百分位数
生活随笔
收集整理的這篇文章主要介紹了
窗口分析函数_17_计算百分位数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ? 計(jì)算百分位數(shù)
需求描述
需求:將EMP表里的部門編號(hào)為20的SAL字段按照由高到低排序取50百分位。
解決方法:通過percentile_cont OVER()來完成.
注: 數(shù)據(jù)庫數(shù)據(jù)集SQL腳本詳見如下鏈接地址
員工表結(jié)構(gòu)和數(shù)據(jù)初始化SQL腳本
SQL代碼
-- SQL Server、Oracle、Mysql 8.0 SELECTpercentile_cont(0.5)WITHIN GROUP (ORDER BY sal) OVER (PARTITION BY deptno) AS percentile_contFROM emp WHERE deptno=20執(zhí)行結(jié)果
注:percentile_cont計(jì)算方法說明:
1 獲得每個(gè)分區(qū)對(duì)應(yīng)的序號(hào)并記作N。
2 RN = p*(N-1), p是PERCENTILE_CONT()里的參數(shù),比如0.5。
3 計(jì)算每個(gè)分區(qū)里的FRN、CRN( FRN= floor(RN)、CRN = ceil(RN))。
4 比較FRN和CRN
??? 如果(CRN = FRN = RN)則結(jié)果是RN行對(duì)應(yīng)數(shù)據(jù),rn從0開始計(jì)數(shù)。
??? 其它則(CRN - RN)*(FRN行對(duì)應(yīng)數(shù)據(jù))+(RN - FRN)*(FRN行對(duì)應(yīng)數(shù)據(jù))
總結(jié)
以上是生活随笔為你收集整理的窗口分析函数_17_计算百分位数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LPR可以不用转换吗 要不要转换看银行的
- 下一篇: 窗口分析函数_18_算累计百分位数