SQL平均不同的时间范围



我有一个结构简单的表(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

最新更新