Mysql AVG忽略零

Ora*_*s13 17 mysql null average zero

我需要在列上执行平均值,但我知道该列中的大多数值都将为零.在所有可能的行中,只有两行可能具有正值.如何告诉mySQL忽略零并且仅平均实际值?

Mar*_*ith 80

假设您可能不想完全排除这些行(可能它们在您希望聚合的其他列中具有值)

SELECT AVG(NULLIF(field ,0)) 
from table
Run Code Online (Sandbox Code Playgroud)

  • 这非常有用 - 尤其是当您的查询中包含多个聚合函数时 (2认同)

Mar*_*ins 5

您可以通过WHERE子句控制它:

select avg( field ) from table where field > 0
Run Code Online (Sandbox Code Playgroud)