如何仅使用MySQL或Oracle获得平均油耗:
SELECT te.fuelName,
zkd.fuelCapacity,
zkd.odometer
FROM ZakupKartyDrogowej zkd
JOIN TypElementu te
ON te.typElementu_Id = zkd.typElementu_Id
AND te.idFirmy = zkd.idFirmy
AND te.typElementu_Id IN (3,4,5)
WHERE zkd.idFirmy = 1054
AND zkd.kartaDrogowa_Id = 42
AND zkd.data BETWEEN to_date('2015-09-01','YYYY-MM-DD')
AND to_date('2015-09-30','YYYY-MM-DD');
此查询的结果是:
fuelName | fuelCapacity | odometer | tanking
-------------------------------------------------
'ON' | 534 | 1284172 | 2015-09-29
'ON' | 571 | 1276284 | 2015-09-02
'ON' | 470 | 1277715 | 2015-09-07
'ON' | 580.01 | 1279700 | 2015-09-11
'ON' | 490 | 1281103 | 2015-09-17
'ON' | 520 | 1282690 | 2015-09-23
我们可以稍后在java
或php
中执行此操作,但希望立即从查询中获取结果。我们应该如何修改上面的查询呢?
fuelCapacity
是加油站装入卡车的燃料升数。
答案 0 :(得分:1)
对于一个总平均值,您需要的是补充的总和除以起点和终点的里程表读数之差,即fuel used / distance travelled
。
我手边没有你的表格结构,但select
语句的这种改动应该可以解决问题:
select cast(sum(zkd.fuelCapacity) as float) / (max(zkd.odometer) - min(zkd.odometer)) as consumption ...
cast(field AS float)
执行名称所暗示的操作,并将字段命名为float,因此结果也将是float。 (我确实怀疑你的fuelCapacity
字段是浮点数,因为你的例子中有一个浮点值,但这将确保。)