Sql 百分位盘与百分位控制
百分位盘和百分位盘的区别是什么 我从childstat中选择了一个表*Sql 百分位盘与百分位控制,sql,oracle,plsql,Sql,Oracle,Plsql,百分位盘和百分位盘的区别是什么 我从childstat中选择了一个表* FIRSTNAME GENDER BIRTHDATE HEIGHT WEIGHT -------------------------------------------------- ------ --------- ---------- ---------- lauren
FIRSTNAME GENDER BIRTHDATE HEIGHT WEIGHT
-------------------------------------------------- ------ --------- ---------- ----------
lauren f 10-JUN-00 54 876
rosemary f 08-MAY-00 35 123
Albert m 02-AUG-00 15 923
buddy m 02-OCT-00 15 150
furkar m 05-JAN-00 76 198
simon m 03-JAN-00 87 256
tommy m 11-DEC-00 78 167
我试图区分这些百分位数
select firstname,height,
percentile_cont(.50) within group (order by height) over() as pctcont_50_ht,
percentile_cont(.72) within group (order by height) over() as pctcont_72_ht,
percentile_disc(.50) within group (order by height) over () as pctdisc_50_ht,
percentile_disc(.72) within group (order by height) over () as pctdisc_72_ht
from childstat order by height
FIRSTNAME HEIGHT PCTCONT_50_HT PCTCONT_72_HT PCTDISC_50_HT PCTDISC_72_HT
-------------------------------------------------- ---------- ------------- ------------- ------------- -------------
buddy 15 54 76.64 54 78
Albert 15 54 76.64 54 78
rosemary 35 54 76.64 54 78
lauren 54 54 76.64 54 78
furkar 76 54 76.64 54 78
tommy 78 54 76.64 54 78
simon 87 54 76.64 54 78
但仍然无法理解这两个函数是如何实现的以及这两个函数的用途。PERCENTILE_DISC在集合/窗口中返回一个值,而PERCENTILE_CONT将进行插值
在您的查询中,当您使用.72时,百分位_CONT在76和78之间插值,因为72%不是其中之一;百分位选择76个最低的我发现这个解释非常有用
我认为这个想法是百分位盘应该用于离散范围,而百分位盘应该用于连续范围。Postgres在SQLFIDLE中检查百分位盘时返回78而不是76,VAL k为值54、35、15、15、76、87、78,从VAL中选择*到表格百分位盘;从percentile_src中按k as perc选择集团订单中的percentile_disc.72;这篇文章解释得很好。谢谢分享好的资源。
ITEM REGION WK FORECASTQTY
---- ---------- ---------- -----------
TEST E 3 137
TEST E 2 190
TEST E 1 232
TEST E 4 400
SELECT
t.* ,
PERCENTILE_CONT(0.5)
WITHIN GROUP ( ORDER BY forecastqty)
OVER (PARTITION BY ITEM , region ) AS PERCENTILE_CONT ,
MEDIAN(forecastqty)
OVER (PARTITION BY ITEM , region ) AS MEDIAN ,
PERCENTILE_DISC(0.5)
WITHIN GROUP ( ORDER BY forecastqty)
OVER (PARTITION BY ITEM , region ) AS PERCENTILE_DISC
FROM
t ;
ITEM REGION WK FORECASTQTY PERCENTILE_CONT MEDIAN PERCENTILE_DISC
---- ---------- ---------- ----------- --------------- ---------- ---------------
TEST E 3 137 211 211 190
TEST E 2 190 211 211 190
TEST E 1 232 211 211 190
TEST E 4 400 211 211 190