我有一个忽略从前一个值增加的值的查询。例如,请使用下表:
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分组时不会有先前的值。
非常感谢任何帮助
答案 0 :(得分:4)
我想你只想要partition by
:
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;