select * from grouping;
上記のクエリは次のようになります。
WORKING_DAYS,DATE_TYPE,SEQ_START
10/11/2013 ,L ,0
10/10/2013 ,L ,0
10/8/2013 ,L ,1
10/6/2013 ,H ,0
10/5/2013 ,H ,0
10/4/2013 ,L ,0
10/3/2013 ,L ,0
10/2/2013 ,L ,0
10/1/2013 ,L ,0
これらの行を SEQ_START でグループ化して、実行すると次の結果が得られるようにします。ランク列は、SEQ_START でグループ化された WORKING_DAYS (またはその他の数値) である必要があります。2013 年 10 月 10 日と 2013 年 10 月 11 日の SEQ_START は 0 ですが、2013 年 10 月 10 日ではなく 2013 年 10 月 10 日であることに注意してください。壊れています (SEQ_START の場合は 0)。
WORKING_DAYS,DATE_TYPE,SEQ_START,rank
10/1/2013 ,L ,0 ,10/1/2013
10/2/2013 ,L ,0 ,10/1/2013
10/3/2013 ,L ,0 ,10/1/2013
10/4/2013 ,L ,0 ,10/1/2013
10/8/2013 ,L ,1 ,10/8/2013
10/10/2013 ,L ,0 ,10/10/2013
10/11/2013 ,L ,0 ,10/10/2013
私は次のクエリを書きましたが、これはほぼ私が期待するものを返しますが、10/10/2013 と 10/11/2013 に "0" の値を与えています。 SEQ_START が 1 の 2013
select working_days,
date_type,
seq_start,
FIRST_VALUE(working_days) OVER (PARTITION BY seq_start
ORDER BY working_days) "rank"
from grouping
where date_type = 'L'