Oracle 四分位数百分比分析

Oracle 四分位数百分比分析,oracle,Oracle,我试图得到每个四分位数中t3和t3之间的最大值和最小值。但是当我把百分比改为50,75。。我看到下面列出的输出。我不确定我在这里做错了什么 SELECT MIN(SPREAD),MAX(SPREAD) FROM (SELECT COUNT(*)*1.0 AS TOTALLINES FROM pa_fcs)A, (SELECT SPREAD,ROWNUM *1.0 AS LINENUM FROM ( select BOARD_RATE_T3,BOARD_RATE_T1 ,(BOARD_RA

我试图得到每个四分位数中t3和t3之间的最大值和最小值。但是当我把百分比改为50,75。。我看到下面列出的输出。我不确定我在这里做错了什么

SELECT MIN(SPREAD),MAX(SPREAD) FROM
  (SELECT COUNT(*)*1.0 AS TOTALLINES FROM pa_fcs)A,
  (SELECT SPREAD,ROWNUM *1.0 AS LINENUM FROM (
select BOARD_RATE_T3,BOARD_RATE_T1 ,(BOARD_RATE_T3-BOARD_RATE_T1) AS SPREAD 
  from  pa_fcs ))B 
  WHERE LINENUM/TOTALLINES <= .25;

OUTPUT: .25
Min(Spread)      Max(Spread)
7.47             5160.24

Output :.50
Min(Spread)      Max(Spread)
7.47             5160.24

Output: .75
Min(Spread)      Max(Spread)
0              5160.24     
使用解析函数计算四分位数

然后是最小值,最大值

create table tab as
select rownum spread from dual connect by level <= 100;

with ntile as (
select 
    spread,
    NTILE(4) OVER (ORDER BY spread DESC)  qtile
from tab)
select qtile, min(spread), max(spread)
from ntile
group by qtile order by 1
;

     QTILE MIN(SPREAD) MAX(SPREAD)
---------- ----------- -----------
         1          76         100
         2          51          75
         3          26          50
         4           1          25

为什么你认为这些结果有问题?您没有对从“pa_fcs”查询的记录进行排序,因此,排列顺序最高的行可能在行的第一季度,排列顺序最低的行可能在行的第三季度。问题是没有对记录排序@MatthewMcPeak@MarmiteBomber我知道:那是我迂回的方式让OP意识到可能是这样的,由于她没有包含预期结果。选择rownum,从双连接按级别排列此查询不起作用。它表示排列无效identifier@Amelia在答案中添加了对表的查询
with spr as (
  select  (BOARD_RATE_T3-BOARD_RATE_T1) AS SPREAD 
  from  pa_fcs),
ntile as (
  select 
    spread,
    NTILE(4) OVER (ORDER BY spread DESC)  qtile
  from spr)
select qtile, min(spread), max(spread)
from ntile
group by qtile order by 1