Oracle, Mysql,如何得到平均



如何获得仅使用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

我们可以稍后在javaphp中这样做,但希望立即从查询中获得结果。我们应该如何修改上面的查询来做到这一点?

fuelCapacity是加油站倒入油箱的燃料升数

对于一个总平均值,您需要的是重新填充的总和除以开始和结束时里程表读数之间的差值,即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字段是一个浮点数,因为在你的例子中有一个浮点值,但这将确保。)

最新更新