2017-01-26 7 views
0

基本的には、ある列が特定の範囲内にあるグループの数を数えたいと思います。数字の列が特定の範囲内にある場合に、集計グループをグループ化する方法は?

例:

DATA: 
COL1:   COL2: 
CC2SYS_LOAD  2239 
CC2SYS_LOAD  2307 
CC2SYS_LOAD  2316 
CC2SYS_LOAD  7164 
CC2SYS_LOAD  7169 
CC2SYS_LOAD  7179 

私は、COL2の値が互いの900で落ちる3つのレコードの2グループがあるので、それは2の数を返す必要があります。

100秒であってもなくてもよい。

+0

3つの異なる行の値が(1000,1899,2798)の場合はどうなりますか?彼らは同じグループの下にいると数えますか? – Boneist

+0

col2の暗黙の順序がある、互いに900の行を探していますか? – BobC

+0

@Boneistその質問は尋ねられなかった..私はそうは思わない。私はクライアントに尋ねる必要があります。 – carny666

答えて

1

これを試してください。次のグループの開始をマーク

select 
    sum(flag) + 1 
from (
    select 
     case when col2 - lag(col2,1,col2) over (order by col2) > 900 then 1 end flag 
    from your_table 
) t 

フラグ(窓関数lagを使用して構築されました)。

+0

ありがとうございました! – carny666

関連する問題