Ответ 1
Предполагая, что вы можете не полностью исключать такие строки (возможно, они имеют значения в других столбцах, которые вы хотите скопировать)
SELECT AVG(NULLIF(field ,0))
from table
Мне нужно выполнить avg для столбца, но я знаю, что большая часть значений в этом столбце будет равна нулю. Из всех возможных строк только два будут иметь положительные значения. Как я могу сказать mySQL игнорировать нули и только усреднять фактические значения?
Предполагая, что вы можете не полностью исключать такие строки (возможно, они имеют значения в других столбцах, которые вы хотите скопировать)
SELECT AVG(NULLIF(field ,0))
from table
Возможно, вы можете контролировать это через предложение WHERE:
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;