私の問題は次のとおりです。
- selectの値の 1 つ ( average ) が nullかどうかを確認する必要があります
- そうである場合は、選択を実行して、異なる期間 (日付) の最初の非 null 値を探します。
- この後、これが(日付-範囲)のどの期間であるかを確認する操作を実行します。
- その後、平均を行います
人間の言語
期間ごとにグループ化されたすべての製品の平均コストを取得したい。
特定の期間に製品に請求書がない場合、前の期間の平均を取得する必要があります (平均コストがある場合)。
期間は月ではなく、顧客によって定義され、2 か月をオーバーラップできます。次に例を示します。
2012-01-01 - 2012-01-29
2012-01-30 - 2012-02-27
1つのクエリでこれを行うにはどうすればよいですか?
クエリは多かれ少なかれ次のようになります (average
値を比較したい列です):
select
p.id
,(select
avg(cost)
from
invoices i
where
i.product_id = p.id
and i.add_date between $start_date
and $end_date
) as average
from
products p;
テーブル/データ/クエリ
この要点を参照してください (元のデータベースではありません。今このテストを行います): https://gist.github.com/4520123