Sql 不计算零的平均值
表中有一些字段,需要对这些字段求平均值。 然后我运行这个语法,因为我不想计算0(零)值 按照我的语法,平均计算意味着。。将零值设为null。 我的问题是,如果所有的值都是零,怎么办 谢谢。那么您将得到空值 如果希望为零,请使用合并:Sql 不计算零的平均值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,表中有一些字段,需要对这些字段求平均值。 然后我运行这个语法,因为我不想计算0(零)值 按照我的语法,平均计算意味着。。将零值设为null。 我的问题是,如果所有的值都是零,怎么办 谢谢。那么您将得到空值 如果希望为零,请使用合并: COALESCE( AVG(CASE myField1 WHEN 0 THEN NULL ELSE myField1 END) , 0) Average不会使用NullValue来计算平均值 IsNull或Coalesce可用于将null值更改为不同的值 此脚本将
COALESCE( AVG(CASE myField1 WHEN 0 THEN NULL ELSE myField1 END) , 0)
Average不会使用NullValue来计算平均值 IsNull或Coalesce可用于将null值更改为不同的值 此脚本将0更改为null并取平均值:
SELECT IsNull(AVG(NullIf(val,0)), 0)
FROM
(Values(5),(7),(0)) tbl(val)
由于排除了0,因此结果为6,您也可以这样做:
SELECT myDate, COALESCE(AVG(myField1), 0) AS avgmyField1
FROM myTable WHERE myDate = '2014-06-01' and myField1 <> 0
选择myDate,合并(平均值(myField1),0)作为avgmyField1
来自myTable,其中myDate='2014-06-01'和myField1 0
QA不想用0计算值,这并不意味着QA想排除这些行
SELECT myDate, COALESCE(AVG(myField1), 0) AS avgmyField1
FROM myTable WHERE myDate = '2014-06-01' and myField1 <> 0