Mysql 忽略零值的行平均数
您好,我对函数avg有一个问题。我有一个这样的表,我想取每行的平均值。我也有一些单元格中的零,希望避免计算它们Mysql 忽略零值的行平均数,mysql,Mysql,您好,我对函数avg有一个问题。我有一个这样的表,我想取每行的平均值。我也有一些单元格中的零,希望避免计算它们 data rep val1 val2 val3 1 a 0 3 3 2 a 1 4 0 3 a 1 1 1 4 a 1 3 0 我想要这个结果 data
data rep val1 val2 val3
1 a 0 3 3
2 a 1 4 0
3 a 1 1 1
4 a 1 3 0
我想要这个结果
data AVG
1 3
2 2.5
3 1
4 2
谢谢假设您至少有一个非零值:
SELECT data, (val1+val2+val3)/((val1!=0) + (val2!=0) + (val3!=0)) avg
FROM **table_name**
我认为除以零返回null
see,这取决于您的数据库设置,因此您可以执行以下操作:
SELECT data, COALESCE((val1+val2+val3)/((val1!=0) + (val2!=0) + (val3!=0)),0) avg
FROM **table_name**
一行中的任何
null
值都将导致每个查询始终分别为该行返回null
和0
。您的SQL查询是什么?是的值是(0)而不是null。1。规范化您的数据您应该注意所有值都为零的情况:-)是的,所有值都为零。+1@Arth:您是对的,您可以复制一点:除零产生空结果: