我有一个名为sensor_data的mysql数据库。脚本每30分钟将电源使用量插入此数据库,并根据日/夜资费计算成本
Rec Date Time Reading Usage Cost Tar
2771 2010-12-20 16:00:00 RFXPower 67044.6 0.5 0.09 0.18
我正在寻找的是一个mysql查询,它将返回最后一小时的用电量和成本。另一个查询将返回每日使用情况和费用。 对于最后一个查询,它应该简单地将成本列中最后两个值的成本相加。我正在尝试使用总和和限制,但我找不到如何限制最后2个当前记录。
REGS
利亚姆答案 0 :(得分:0)
得到最后一小时:
SELECT SUM(Cost)
FROM sensor_data
WHERE RecID > (SELECT Rec FROM sensor_data WHERE Date < CURDATE() OR Time < NOW() - INTERVAL 1 HOUR ORDER BY Rec DESC LIMIT 1);
并获得每日总数:
SELECT SUM(Cost)
FROM sensor_data
WHERE RecID > (SELECT Rec FROM sensor_data WHERE Date < CURDATE() ORDER BY Rec DESC LIMIT 1);
答案 1 :(得分:0)
由于SUM查询仅返回一个聚合行,因此无法直接将其与LIMIT结合使用。您可以使用子查询:
SELECT SUM(cost) + SUM(tar) FROM (SELECT cost, tar FROM sensor_data ORDER BY rec DESC LIMIT 2) AS subquery;
或者您可以改为使用日期或时间条件(WHERE …
)。
答案 2 :(得分:0)
除非我弄错了,否则你只会遇到第三个查询的问题;前两个查询运行良好。对于第三个查询(总结最后两个记录的成本),您可以按降序对结果集进行排序,并将其限制为两个记录。