2017-08-15 13 views
2

以前の値から増加する値を無視するクエリがあります。たとえば、次の表を取る:グループによるオラクル遅延機能by

col1 col2 col3 
5  1  A 
4  2  A 
6  3  A 
9  4  B 
8  5  B 
10  6  B 

は今、次のクエリを取る:それはCOL1 = 6,9及び10以前のための列を無視するということで期待どおり

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; 

は今、クエリが動作します値はより小さい。今私が解決しようとしている問題は、これをグループごとに行うことです。だから私はcol3でグループ化された以前の値を無視するだけです。だから、私は6と10を無視したいが、col3 9でグループ化すると以前の値を持たないので9ではない。

すべてのヘルプは大幅に

答えて

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; 
+0

あなたは確かにオラクルマスターです。数分でここに受け入れられます – Maxqueue

関連する問題