オラクル版11gオラクル:過去30営業日の平均件数を取得
私のテーブルには、これらと同様のレコードがあります。
calendar_date ID record_count
25-OCT-2017 1 20
25-OCT-2017 2 40
25-OCT-2017 3 60
24-OCT-2017 1 70
24-OCT-2017 2 50
24-OCT-2017 3 10
20-OCT-2017 1 35
20-OCT-2017 2 60
20-OCT-2017 3 90
18-OCT-2017 1 80
18-OCT-2017 2 50
18-OCT-2017 3 45
つまり、それぞれID
の場合、指定された暦日に1レコードカウントがあります。日はではなくです。つまり、週末/休日などのレコードが不足している可能性があります。その日には、IDに使用できるレコードはありません。しかし、就業日には、各IDに対応するエントリーがあります。
私は、このような出力をしたい各ID
のために最後の30 business days
の平均レコード数を取得する必要があり。
ID avg_count_last_30
1 150
2 130
3 110
私はこれを行う最も効率的な方法を見つけようとしています。私はRANGE BETWEEN
、ROWS BETWEEN
などを使用することを考えましたが、それはうまくいくでしょう。
もちろん、このようなクエリは間に休暇があるので役に立ちません。私は必要なもの
select id, AVG(record_count) FROM mytable
where calendar_date between SYSDATE - 30 and SYSDATE - 1
group by id;
は、私が30
last_business_day
が直近営業日になります数えるまで
select id , AVG(record_count) FROM mytable
where calendar_date between last_30th_business_day and last_business_day
group by id;
last_30th_business_day
のようなものが後方に行く直近営業日から始まるcount(DISTINCT business_days)
になりますです
専門家の意見を知りたいですか?これと最善のアプローチ。あなたのコメントに基づいて
どのように休日の日付を得るのですか?週末を除いてはそれほど難しくはありませんが、祝日を含むテーブルが参考に必要です。 –
特定のカレンダー駆動アプローチについて詳しく知りたい。 Holidayテーブルを作成し、クエリで使用する必要があります。 – XING
各営業日に** 1 **レコードがありますか? –