これで2つのテーブルがあります。日付が常に一貫していないID、日付、および値のテーブルを指定して、1か月あたりの値ごとのレコード数を計算します。
locations:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Location1 |
| 2 | Location2 |
| 3 | Location3 |
+----+-----------+
location_ratings
+----+-------------+-----------+--------+
| id | location_id | date | rating |
+----+-------------+-----------+--------+
| 1 | 1 | 4/7/2017 | 1 |
| 2 | 1 | 7/3/2017 | 2 |
| 3 | 1 | 9/9/2017 | 5 |
| 4 | 1 | 11/2/2017 | 4 |
| 5 | 2 | 1/3/2017 | 3 |
| 9 | 2 | 3/7/2017 | 1 |
| 12 | 3 | 2/7/2017 | 2 |
| 13 | 3 | 3/4/2017 | 4 |
| 15 | 3 | 10/1/2017 | 1 |
+----+-------------+-----------+--------+
ロケーションはランダムに評価され、再び評価されるまでそのレーティングが保持されます。まだ評価されていない場所の評価は0と見なされます。そのため、Location1では4/7/01まで0、その後7/3までなど1/7などでした。
1か月あたりの位置数を計算する必要があります。ここでは、その月の場所の評価は、月の1日目の評価と同じです。
基本的に、各農場の評価は、毎月1日に見つけたいと思っています。
+---------------------+----------+----------+----------+----------+----------+----------+----------+----------+----------+-----------+-----------+-----------+
| Location ID/Month | 1/1/2017 | 2/1/2017 | 3/1/2017 | 4/1/2017 | 5/1/2017 | 6/1/2017 | 7/1/2017 | 8/1/2017 | 9/1/2017 | 10/1/2017 | 11/1/2017 | 12/1/2017 |
+---------------------+----------+----------+----------+----------+----------+----------+----------+----------+----------+-----------+-----------+-----------+
| 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 5 | 5 | 5 |
| 2 | 0 | 3 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 3 | 0 | 0 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 1 | 1 |
+---------------------+----------+----------+----------+----------+----------+----------+----------+----------+----------+-----------+-----------+-----------+
そして、これが最終的な結果になります(月額各評価での場所の数)::これは、毎月第一に、各ファームの評価となり、上記の例のデータを使用して
+----------------+----------+----------+----------+----------+----------+----------+----------+----------+----------+-----------+-----------+-----------+
| Rating/Month | 1/1/2017 | 2/1/2017 | 3/1/2017 | 4/1/2017 | 5/1/2017 | 6/1/2017 | 7/1/2017 | 8/1/2017 | 9/1/2017 | 10/1/2017 | 11/1/2017 | 12/1/2017 |
+----------------+----------+----------+----------+----------+----------+----------+----------+----------+----------+-----------+-----------+-----------+
| 0 | 3 | 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 2 |
| 2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 3 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
| 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
+----------------+----------+----------+----------+----------+----------+----------+----------+----------+----------+-----------+-----------+-----------+
私はその最終結果に到達する最善の方法を見つけようとしています。もし私が基本的にそれをすべてクエリーでやることができないか、すべてのデータを取り込んだ後に計算をする必要があるかどうかはわかりません(私はPostgresとRuby on Railsを使用しています)。月にだけでなく週、四半期、年にもこれを行うことができます。どんな提案も大変ありがとうございます。