我有下表:
ID Value1 Value2 Value3
1 10 0 5
2 12 10 20
3 0 5 9
4 20 12 8
5 2 15 0
我希望得到以下结果:
ID avgValue
1 7.5
2 14
3 7
4 13.33
5 8.5
公式是正常平均值,但平均值计算总是跳过零值。 有人知道怎么做吗?
谢谢。
答案 0 :(得分:3)
想法是根据三列的0值选择分母计数。
http://sqlfiddle.com/#!3/d36c31/4
select
id,
cast((value1+value2+value3) as float)/
(
case when value1>0 then 1 else 0 end
+
case when value2>0 then 1 else 0 end
+
case when value3>0 then 1 else 0 end
)
as avgValue
from test
请告诉我它是否适合您..