Percentile_disc vs percentile_cont
В чем разница между PERCENTILE_DISC
и PERCENTILE_CONT
,
У меня есть таблица ### select * from childstat
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
Но все же не могу понять, как эти два и какие функции используют эти две функции.
Ответы
Ответ 1
PERCENTILE_DISC
возвращает значение в вашем наборе/окне, тогда как PERCENTILE_CONT
будет интерполировать;
В вашем запросе, когда вы используете .72
, PERCENTILE_CONT
интерполирует между 76 и 78, поскольку 72% не являются ни одним из них; PERCENTILE_DISC
выбирает 76 (самый низкий из них)