Mysql 忽略零值的行平均数

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

您好,我对函数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    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:您是对的,您可以复制一点:除零产生空结果: