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%实际上是含糊不清的,这是一种合理的解释。)