我有一个mysql数据库,大约每10秒添加一条新记录。我需要运行一个查询,返回前一分钟的平均记录。以下返回前一分钟的部分平均值和当前分钟的部分平均值。
SELECT Avg(Irms) AS Irms, DATE_FORMAT(datetime, '%Y-%m-%d %H:%i') AS datetime
FROM power
WHERE datetime > NOW() - INTERVAL 121 MINUTE GROUP BY MINUTE(datetime)
因此,假设NOW()= 19:23:31,它将返回前一分钟的最后3条记录的平均值和当前分钟的前三条记录的平均值。
如何构建查询语句以确保它仅返回前一分钟内所有记录的平均值?例如,如果NOW()= 19:23:31,它将返回从19:22:00到19:22:59输入的六个记录的平均值。
感谢。 - 猴面包树
答案 0 :(得分:0)
试试这个:
SELECT AVG(Irms) AS Irms, DATE_FORMAT(DATETIME, '%Y-%m-%d %H:%i') AS DATETIME
FROM POWER
WHERE DATE_FORMAT(DATETIME, '%Y-%m-%d %H:%i') = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MINUTE), '%Y-%m-%d %H:%i')