Mysql AVG игнорировать ноль

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

Ответы

Ответ 1

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

SELECT AVG(NULLIF(field ,0)) 
from table

Ответ 2

Возможно, вы можете контролировать это через предложение WHERE:

select avg( field ) from table where field > 0

Ответ 3

select avg(your_column) 
from your_table 
where your_column != 0

Ответ 4

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

UPDATE table SET column = NULL WHERE column='0';
SELECT AVG(column) FROM table;