太陽光発電データ (pvdata) の MySQL テーブルがあり、そこから毎月の要約テーブルを作成する必要があります。簡単な表を以下に示します。
ID 日時 pvdata
1 2012-01-01 10:00 50
1 2012-01-31 12:00 60
1 2012-02-10 13:00 70
2 2012-02-08 10:00 12
2 2012-03-20 10:00 17
その月のデータを受信したかどうかに関係なく、月次サマリー テーブルには、データベース内のすべてのシステムの累積世代を表示する必要があります。たとえば、以下の月 3 には、id = 1 (月 2 に受信したデータ) からの合計世代が含まれます。
また、同じ月に 1 つの ID に対して複数のデータ ポイントが存在する可能性があるため、レポートではその月の最大 (データ) を報告する必要があります。
年 月 cum_data
2012 1 60
2012 2 82
2012 3 87
私はこれにかなり慣れていないので、しばらく苦労しました。私が思いつくことができる最高のものは、その月の累積合計を示していますが、当月にデータがない id の累積合計は含まれていません。
CREATE TEMPORARY TABLE intermed_gen_report
SELECT year(date) AS year, month(date) AS month, id, max(pvdata) AS maxpvdata
FROM pvdata
GROUP BY id, year(date), month(date)
ORDER BY year(date), month(date);
SELECT year, month, SUM(maxpvdata) AS cum_data
FROM intermed_gen_report
GROUP BY year, month
ORDER BY year, month;
与える:
年 月 cum_data
2012 1 60
2012 2 82
2012 3 17