20

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

4

4 回答 4

94

假设您可能不希望完全排除此类行(也许它们在您要聚合的其他列中具有值)

SELECT AVG(NULLIF(field ,0)) 
from table
于 2011-03-17T15:07:38.337 回答
5

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

select avg( field ) from table where field > 0
于 2011-03-17T15:05:24.540 回答
1
select avg(your_column) 
from your_table 
where your_column != 0
于 2011-03-17T15:09:51.337 回答
0

您可以将零转换为NULL,然后AVG()函数将仅适用于非NULL值。

UPDATE table SET column = NULL WHERE column='0';
SELECT AVG(column) FROM table;
于 2012-10-16T18:22:45.617 回答