带条件的SQL AVG

时间:2016-12-16 09:30:02

标签: sql oracle average

我尝试修复我之前做过的SQL并且在执行此操作时遇到问题。 我有一个巨大的SQL女巫计算报告的SUM字段。

ATM SQL计算每辆车,即使它是一辆电动车。

 CASE
          WHEN AVG(mov.TOTALCONSUMPTION)   >0
          AND AVG((moving.TOTALTIME)) >0
          THEN ROUND(AVG(mov.TOTALCONSUMPTION) / (AVG(mov.TOTALTIME)/3600), 4)
          ELSE 0
        END ConsumptionPerHour,

我的sql需要条件Where vehicle.energysource = 0, 我试着建立它但总是得到错误。 “不是GROUP BY表达式”

 CASE
          WHEN AVG(mov.TOTALCONSUMPTION)   >0
          AND AVG((moving.TOTALTIME)) >0
          AND vehicle.ENERGYSOURCE= 0 
          THEN ROUND(AVG(mov.TOTALCONSUMPTION) / (AVG(mov.TOTALTIME)/3600), 4)
          ELSE 0
        END ConsumptionPerHour,

我知道错误意味着什么,但我没有Idear如何解决这个问题。 任何人都有Idear如何解决这个问题?

(如果有帮助的话,请使用Oracle sql开发人员)

编辑:

我的确切问题是我不能把它放在Where部分,因为我的SQL必须用Electro Cars计算一些东西,就像驱动的Killometers Ect。

我有燃料问题,因为我想计算平均值。 让我们说Car 1是一辆电动汽车和一辆柴油车。

1的消耗量为0(因为电动汽车)和2.消耗量为20。

我的SQL现在计算消耗总和(车1 +车2 = 20)/车辆数量: 这使得平均消耗量为10。

但我只需要所有非电动车的平均消耗量。

也许是一个noob问题,但我是一个实习生,独自一人在办公室,很抱歉,如果这是一个简单或错误解释的问题。

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个解决方案,我简单地创建了一个子选择并在此处过滤

vd.fuel = 0

无论如何,谢谢你的帮助。