2016-12-16 191 views
0

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

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 Developer,如果这是有益的)

编辑:

我确切的问题是,我不能把它放在哪儿部分becouse我的SQL要计算一些事情电汽车太像驱动的Killometers等。

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

的1一个具有0的消耗(becouse电动车)和20.

所述2.一个我的SQL消费现在计算总和(轿厢1 + CAR2 = 20)/汽车的量: 这使平均消费为10.

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

也许是noob问题,但我是一名实习生,只有在办公室,很抱歉,如果这是一个简单或不好解释的问题。

+0

你说你需要'where vehicle.energysource = 0',但在你的第二个查询中你添加了'AND vd.FUEL = 0'。连接是什么?像scaisEdge说的,我们需要你的整个查询。 – HoneyBadger

+0

对不起,我为了更好地理解,在第一个SQL中将Fuel名称更改为energysource。一样的。 – Ice

+0

对不起,我忘了写,我的SQL必须做一些与电动车一样的东西,如计算Killometers等。给我一秒我编辑我的帖子 – Ice

回答

0

好吧,我发现了一个解决方案,我简单的创建一个子选择在这里进行过滤,如果

vd.fuel = 0 

不管怎么说,感谢您的帮助。