我需要在列上执行平均值,但我知道该列中的大多数值都将为零。在所有可能的行中,只有两行可能具有正值。如何告诉mySQL忽略零并且仅平均实际值?
答案 0 :(得分:79)
假设您可能不想完全排除这些行(可能它们在您想要聚合的其他列中有值)
SELECT AVG(NULLIF(field ,0))
from table
答案 1 :(得分:5)
您可以通过WHERE子句控制它:
select avg( field ) from table where field > 0
答案 2 :(得分:0)
select avg(your_column)
from your_table
where your_column != 0
答案 3 :(得分:0)
您可以将零转换为NULL
,然后AVG()
函数仅适用于NULL
个值。
UPDATE table SET column = NULL WHERE column='0';
SELECT AVG(column) FROM table;