Мне нужно выполнить avg для столбца, но я знаю, что большинство значений в этом столбце будут равны нулю. Из всех возможных строк только две, вероятно, будут иметь положительные значения. Как я могу сказать mySQL игнорировать нули и только усреднять действительные значения?
Предполагая, что вы можете не исключать такие строки полностью (возможно, они имеют значения в других столбцах, которые вы хотите агрегировать)
SELECT AVG(NULLIF(field ,0)) from table
Вы, вероятно, можете контролировать это с помощью предложения WHERE:
select avg( field ) from table where field > 0
Вы можете преобразовать нули в NULL, тогда функция AVG() будет работать только с не NULL значениями.
NULL
AVG()
UPDATE table SET column = NULL WHERE column='0'; SELECT AVG(column) FROM table;
select avg(your_column) from your_table where your_column != 0