20

列で平均を実行する必要がありますが、その列のほとんどの値がゼロになることがわかっています。考えられるすべての行のうち、2 つだけが正の値を持つ可能性があります。ゼロを無視して実際の値のみを平均化するように 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 に答える