Oracle,Mysql,如何获得平均

时间:2015-10-22 06:04:55

标签: sql oracle average

如何仅使用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是加油站装入卡车的燃料升数。

1 个答案:

答案 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字段是浮点数,因为你的例子中有一个浮点值,但这将确保。)