Sql 基于最高值比较分组值

Sql 基于最高值比较分组值,sql,oracle,Sql,Oracle,我有以下格式的表格:- QUOTEID EAC RN 50 23642.3 2 50 23292.8 1 126 18101.1 1 193 924621.1 12 193 121967.8 11 193 127852.3 10 193 129995.1 9 199 16520.8 1 在Oracle中,我想知道是否可以返回QUOTEID,其中最后两个EA

我有以下格式的表格:-

QUOTEID EAC         RN
50      23642.3     2
50      23292.8     1
126     18101.1     1
193     924621.1    12
193     121967.8    11
193     127852.3    10
193     129995.1    9
199     16520.8     1
在Oracle中,我想知道是否可以返回QUOTEID,其中最后两个EAC(由RN确定)的差异超过30%,按QUOTEID分组。可以忽略最大RN为1的任何QUOTEID

因此,使用上述数据,预期输出为:-

QUOTEID 
193

一种方法使用
行数()
和聚合:

select quoteid
from (select t.*,
             row_number() over (partition by quoteid order by rn desc) as seqnum
      from t
     ) t
where seqnum <= 2
group by quoteid
having min(eac) < max(eac) * 0.7;

(相差30%实际上是不明确的,这是一种合理的解释。)

一种方法使用
行数()

select quoteid
from (select t.*,
             row_number() over (partition by quoteid order by rn desc) as seqnum
      from t
     ) t
where seqnum <= 2
group by quoteid
having min(eac) < max(eac) * 0.7;
(相差30%实际上是含糊不清的,这是一种合理的解释。)