2016-11-29 3 views
0

週ごとに値を集計する必要があります。私の日付範囲は動的で、私は任意の開始日と終了日を与えることができます。毎週日曜日は毎月の開始週にする必要があります。私は2つの列を持っているし、私の開始日と終了日は2016年7月11日私の結果はこれ PL/SQL週ごとの動的な時間範囲を持つ集計ロジック

Column A      Column B 
13/11/2016      14.00 

列Bの平均を取るように来る必要があり

 column A       column B 
    07/11/2016        23 
    08/11/2016        20 
    09/11/2016        10 
    10/11/2016        05 
    11/11/2016        10 
    12/11/2016        20 
    13/11/2016        10 

13/11/2016にある場合を言います私は過去の価値を考慮し、その週の日曜日に集計する必要があることを意味します。また、開始日と終了日が07/11/2016〜10/11/2016の場合は、週が完了していないため、値を集計しないでください。私は値を集計することができますが、週が完了していない場合は集計を制限できません。 PL/SQLでこれを行う方法はありますか?

ありがとうございます。

+0

のように表示されます。週の開始と終了の両方が存在する場合でも、データが欠落していますか? –

+0

'end_date - start_date> = 7'の余分な述語が必要なのでしょうか? – Boneist

+1

なぜストアドプロシージャが必要ですか? –

答えて

0
select to_char(columnA, 'iw') as weeknumber, avg(columnB) 
    from table 
    group by to_char(columnA, 'iw'); 

これは週単位で集計されます。ラベルの最後の曜日を表示する必要がある場合は、max(columnA) over (partition by to_char(columnA, 'iw'))

+0

これは役に立ちません。週が完了したかどうかは、開始日と終了日に基づいてチェックする必要があるためです。 –

+0

私のコードはSELECTデコードと似ています(p_smp_sz、 'week'、 ((trunc(datetime、 'IW') - 1)+ Interval '7' DAY))from datetime_table ded WHERE ded.datetime + v_timezone_offset> = p_frm_dt AND ded.datetime + v_timezone_offset <= p_to_dt –

関連する問題