我有一个光伏发电数据 (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 个月收到的数据)。
此外,同一月份可能有多个 id 的数据点,因此报告必须报告该月的 max(data)。
年月 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