Mysql AVG игнорировать ноль - PullRequest
17 голосов
/ 17 марта 2011

Мне нужно выполнить avg для столбца, но я знаю, что большинство значений в этом столбце будут равны нулю. Из всех возможных строк только две, вероятно, будут иметь положительные значения. Как я могу сказать mySQL игнорировать нули и только усреднять действительные значения?

Ответы [ 4 ]

79 голосов
/ 17 марта 2011

Предполагая, что вы можете не исключать такие строки полностью (возможно, они имеют значения в других столбцах, которые вы хотите агрегировать)

SELECT AVG(NULLIF(field ,0)) 
from table
5 голосов
/ 17 марта 2011

Вы, вероятно, можете контролировать это с помощью предложения WHERE:

select avg( field ) from table where field > 0
0 голосов
/ 16 октября 2012

Вы можете преобразовать нули в NULL, тогда функция AVG() будет работать только с не NULL значениями.

UPDATE table SET column = NULL WHERE column='0';
SELECT AVG(column) FROM table;
0 голосов
/ 17 марта 2011
select avg(your_column) 
from your_table 
where your_column != 0
...