Quelle est la différence entre PERCENTILE_DISC
et PERCENTILE_CONT
,
J'ai une table ### 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
Et j'essaie de différencier ces centiles
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
Mais je n'arrive toujours pas à comprendre comment ces deux fonctions et à quoi servent ces deux fonctions.
PERCENTILE_DISC
renvoie une valeur dans votre ensemble/fenêtre, tandis que PERCENTILE_CONT
va interpoler;
Dans votre requête, lorsque vous utilisez .72
, PERCENTILE_CONT
interpole entre 76 et 78, puisque 72% n'est ni l'un ni l'autre; PERCENTILE_DISC
choisit 76 (le plus bas des deux)
J'ai trouvé cette explication très utile http://mfzahirdba.blogspot.com/2012/09/difference-between-percentilecont-and.html
ITEM REGION WK FORECASTQTY
---- ---------- ---------- -----------
TEST E 3 137
TEST E 2 190
TEST E 1 232
TEST E 4 400
SQL> SELECT
2 t.* ,
3 PERCENTILE_CONT(0.5)
4 WITHIN GROUP ( ORDER BY forecastqty)
5 OVER (PARTITION BY ITEM , region ) AS PERCENTILE_CONT ,
6 MEDIAN(forecastqty)
7 OVER (PARTITION BY ITEM , region ) AS MEDIAN ,
8 PERCENTILE_DISC(0.5)
9 WITHIN GROUP ( ORDER BY forecastqty)
10 OVER (PARTITION BY ITEM , region ) AS PERCENTILE_DISC
11 FROM
12 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