我有一个结构简单的表(DTP),大约有200k行
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| DT | datetime | YES | | NULL | |
| PWR | decimal(5,3) | YES | | NULL | |
| Pix | int(11) | NO | PRI | NULL | auto_increment |
+-------+--------------+------+-----+---------+----------------+
- DT =每10分钟(日光)的日期时间
- PWR = 10分钟平均发电量
我想知道日、周、月、年平均发电量
我怀疑以下是错误的,甚至在我尝试之前,但我找不到关于如何构建我的SQL来返回这些平均值的帮助。(我预计每段时间对每个平均值有一个不同的查询。
SELECT AVG(PWR) AS DailyAvgPwr
FROM DTP
WHERE (year(DT) AND month(DT) AND day(DT)) IN(
SELECT PWR, year(DT), month(DT), day(DT)
FROM DTP
GROUP BY year(DT), month(DT), day(DT)
ORDER BY year(DT), month(DT), day(DT);
如果在至少一个时期有一些指导就太好了:我猜我可以推断出答案来得到其他时期的平均值。
[在情况下,它是相关的,我使用MariaDB,服务器版本:10.5.12]
我认为这是WITH ROLLUP的工作。试试这样做。
SELECT YEAR(DT) YR, MONTH(DT) mon, DAY(DT) dy,
AVG(PWR) kW
FROM DTP
GROUP BY YEAR(DT), MONTH(DT), DAY(DT) WITH ROLLUP