Mysql查询使用SUM和Limit来计算使用和成本

时间:2010-12-22 20:30:04

标签: mysql sum limit

我有一个名为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

利亚姆

3 个答案:

答案 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)

除非我弄错了,否则你只会遇到第三个查询的问题;前两个查询运行良好。对于第三个查询(总结最后两个记录的成本),您可以按降序对结果集进行排序,并将其限制为两个记录。