我有一个名为“numbers”的数字 mysql 数据库字段,其中有 10 个条目,数字范围为 0-10。
我想找到这个的平均值,但不包括数字 = 0 的所有条目。 但我还想计算有多少条目 - 包括 number = 0 的条目。
所以我不能只添加一个 WHERE 数字!=0,因为那样会在我的 COUNT 中给出错误的结果。
所以我需要类似的东西。
AVG(if(numbers!=0)) AS average
最佳答案
这个怎么样?
select avg(nullif(field, 0)) from table;
请注意此方法如何不强制您使用 where
子句,以防您希望将其用作您一般不希望排除零值的较大查询的一部分.
另外,顺便说一下,avg
会跳过null
值,所以在上面的例子中我们使用了nullif
来将0
值转换为 null
值。如果您使用 null
值来表示不应考虑平均值的值(例如,如果 0
是合法值),则只需使用 平均(字段)
。
关于mysql - 使用 AVG 时排除带有 "0"的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871775/