Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 甲骨文中的百分位数_Sql_Oracle_Oracle11g_Statistics_Percentile - Fatal编程技术网

Sql 甲骨文中的百分位数

Sql 甲骨文中的百分位数,sql,oracle,oracle11g,statistics,percentile,Sql,Oracle,Oracle11g,Statistics,Percentile,我有以下查询,在其中我试图计算出从发送信函到今天日期之间的天数的百分位数: SELECT PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY SUM(TRUNC(SYSDATE) - ( TO_DATE( SUBSTR(M.LETTER_SENT, 1, 11), 'YYYY-MON-DD') )) ASC) AS PERCENTILE_10, PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY

我有以下查询,在其中我试图计算出从发送信函到今天日期之间的天数的百分位数:

SELECT PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY SUM(TRUNC(SYSDATE) -
            ( TO_DATE( SUBSTR(M.LETTER_SENT, 1, 11), 'YYYY-MON-DD') )) ASC) AS PERCENTILE_10,
   PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY SUM(TRUNC(SYSDATE) -
            ( TO_DATE( SUBSTR(M.LETTER_SENT, 1, 11), 'YYYY-MON-DD') )) ASC) AS PERCENTILE_90
FROM MV_TABLE M8
WHERE M8.LETTER_SENT != 'N'
GROUP BY M8.LETTER_SENT;
我可能错误地认为,它应该返回结果集的第10和第90个百分位数

M.LETTER\u SENT
的格式为
YYYY-MON-DD:USER\u ID
。因此,我的查询使用
SYSDATE
-
TO_DATE(SUBSTR(M.LETTER_SENT,1,11),'YYYY-MON-DD')
计算出两个日期之间的天数。 因此,发送的
M.LETTER_
以下4天结果集I的实际值
2015-2月27日:rstone

该查询返回以下结果集:

242
4
4
4
39
11
18
361
我对百分位数的理解是,如果你想要第90个百分位数,那么会出现以下情况

number of records * percentile = percentile => (round up) = index value
所以在我的情况下:

8 * 0.1 = 0.8 => (round up) = 1

8 * 0.9 = 7.2 => (round up) = 8
有序结果集上的第一个值为:4 有序结果集中的第8个值为:361

甲骨文对我的回报:11作为第10百分位,虽然


当我做0.2+0.8个百分位数时,我分别得到12242个。我一直明白有几种不同的方法来计算百分位数。那么Oracle是如何计算这些结果的呢?我对百分位数应该是多少的想法是错误的吗?

为什么有
orderbysum()
?我想那将是一个累加的总数。如果您提供发送的字母的实际值,我们可能会提供更多帮助。@JeffreyKemp
M.LETTER\u SENT
的格式为
YYYY-MON-DD:USER\u ID
。这就是关于信件日期的所有信息,我使用
SYSDATE
-
M.letter\u SENT
来获取信件发送后的天数。@JeffreyKemp添加到Q