私は3つのテーブルを持っています。表Aは、株式とカテゴリーの関係を保管する。追加日は、在庫がカテゴリに追加された日時を示し、削除日は、在庫が削除された日を意味します。取消日がNULLの場合、在庫はまだカテゴリに含まれていることを意味します。MySql 2つのテーブルのレコードを合計し、3番目のテーブルと結合します
+---+----------+ ------- +------------+------------+
|id | Stock_id |Category | Add Date | Remove Date|
+---+----------+-------- +------------+------------+
| 1 | 1 | CategoryA| 2017-09-03 | 2017-09-07 |
| 2 | 1 | CategoryA|2017-09-11 | null |
| 3 | 2 | CategoryA| 2017-09-06 | null |
+---+----------+-------- +------------+------------+
表Bには、取引日数が格納されています。
+---+------------+----------+-------------+
|id | Stock_id | amount | Date |
+---+------------+----------+-------------+
| 1 | 1 | 100 | 2017-09-04 |
| 2 | 1 | 100 | 2017-09-05 |
| 3 | 1 | 100 | 2017-09-06 |
| 4 | 1 | 100 | 2017-09-07 |
| 5 | 1 | 100 | 2017-09-08 |
| 6 | 1 | 100 | 2017-09-09 |
| 7 | 2 | 100 | 2017-09-05 |
| 8 | 2 | 200 | 2017-09-06 |
....
| 2 | 2 | 200 | 2017-09-10 |
+---+------------+----------+-------------+
表Cは、カテゴリトランザクション量を日数で格納します。
+---+------------+----------+-------------+
|id | Category | amount | Date |
+---+------------+----------+-------------+
| 1 | A | 300 | 2017-09-04 |
| 2 | A | 300 | 2017-09-05 |
| 3 | A | 300 | 2017-09-06 |
| 4 | A | 300 | 2017-09-07 |
| 5 | A | 300 | 2017-09-08 |
+---+------------+----------+-------------+
私は何をしたいことは、このような2017年9月4日から2017年9月8日までとして、1)期間中カテゴリ量を合計し、一定の期間である、2)その後、すべての合計期間内のカテゴリにあるidによる金額の在庫。 3)2を1で割って比率を計算する。 STOCK ID1の場合、09-07で削除されたため、sqlは3日間のレコード(09-03/09.06)の金額のみを計算する必要があります。 STOCK ID2の場合は09-06に追加され、09.06から09.08までの3日間のみ計算されます。表Cのカテゴリの合計金額は単純ですが、合計はわずか5日です。 結果は期待通りです
+---+----------+ ------- +
|id | Stockid |Result |
+---+----------+-------- +
| 1 | 1 | 0.2 | # (100+100+100)/300*5
| 2 | 2 | 0.4 | # (200+200+200)/300*5
どうすればいいですか?皆さん、ありがとうございました!