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