你好我的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
谢谢
答案 0 :(得分:1)
假设您至少有一个非零值:
SELECT data, (val1+val2+val3)/((val1!=0) + (val2!=0) + (val3!=0)) avg
FROM **table_name**
我认为除以零返回null
请参阅manual,具体取决于您的数据库设置,因此您可以这样做:
SELECT data, COALESCE((val1+val2+val3)/((val1!=0) + (val2!=0) + (val3!=0)),0) avg
FROM **table_name**
一行中的任何null
值都会导致每个查询始终分别为该行返回null
和0
。