Sql 具有group by的oracle滞后函数
我有一个查询,它忽略从上一个值增加的值。以下表为例:Sql 具有group by的oracle滞后函数,sql,database,oracle,Sql,Database,Oracle,我有一个查询,它忽略从上一个值增加的值。以下表为例: col1 col2 col3 5 1 A 4 2 A 6 3 A 9 4 B 8 5 B 10 6 B 现在进行以下查询: select col1 from (select col1, lag(col1) over (order by col2) as prev_value from
col1 col2 col3
5 1 A
4 2 A
6 3 A
9 4 B
8 5 B
10 6 B
现在进行以下查询:
select col1
from (select col1, lag(col1) over (order by col2) as prev_value
from test
)
where prev_value is null or prev_value > col1;
现在查询的工作原理与预期一样,它忽略col1=6、9和10的列,因为前面的值较小。现在,我试图解决的问题是,让它一组一组地做这件事。所以我只希望它忽略以前按col3分组的值。所以我确实希望忽略6和10,但不要忽略9,因为当按col3分组时,9不会有以前的值
任何帮助都将不胜感激我想您只需要按分区即可:
select col1
from (select col1, lag(col1) over (partition by col3 order by col2) as prev_value
from test
)
where prev_value is null or prev_value > col1;
你真是神谕大师。几分钟后我会在这里接受