我需要在一个列上执行平均操作,但我知道该列中大部分值都为零。在所有可能的行中,只有两个可能具有正值。如何告诉MySQL忽略零并只计算实际值的平均值?
假设您可能不希望完全排除这些行(也许它们在其他列中有您想聚合的值)
SELECT AVG(NULLIF(field ,0))
from table
select avg( field ) from table where field > 0
select avg(your_column)
from your_table
where your_column != 0
您可以将零转换为NULL
,然后AVG()
函数仅使用非NULL
值进行计算。
UPDATE table SET column = NULL WHERE column='0';
SELECT AVG(column) FROM table;