我在表格中有一些字段,需要平均那些字段。 然后我运行这个语法,因为我不想计算0(零)值。
SELECT myDate, AVG(CASE myField1 WHEN 0 THEN NULL ELSE myField1 END) AS avgmyField1
FROM myTable WHERE myDate = '2014-06-01'
在我的语法上,平均计算意味着..将零值设为null。 我的问题是,如果所有值都为零......
谢谢。
答案 0 :(得分:1)
然后你得到NULL。
如果您想要零,请使用COALESCE:
COALESCE( AVG(CASE myField1 WHEN 0 THEN NULL ELSE myField1 END) , 0)
答案 1 :(得分:0)
平均值不会使用nullval来计算平均值
IsNull或Coalesce可用于将空值更改为不同的值。
此脚本将0更改为null并取平均值:
SELECT IsNull(AVG(NullIf(val,0)), 0)
FROM
(Values(5),(7),(0)) tbl(val)
由于排除0,结果为6
答案 2 :(得分:0)
你也可以这样做:
SELECT myDate, COALESCE(AVG(myField1), 0) AS avgmyField1
FROM myTable WHERE myDate = '2014-06-01' and myField1 <> 0