我想让 AVG 从可以包含它们的值列表中排除 0,除非 0 是唯一可用的值(或者至少只有一行并且值正好是 0)。
目前我在用
SELECT AVG (NULLIF(feature, 0))
from cluster_density_feat
where cluster_id=1;
但是如果特征值 cluster_id 只有一行并且他的特征值为 0 或者如果这个 cluster_id 的每一行都只有零值,它返回 NULL。
我怎样才能做到这一点?
最佳答案
AVG()
使用组中的所有值,它不能排除 0
秒。您应该使用 WHERE
排除它们条款。
SELECT IFNULL(AVG(feature), 0)
FROM cluster_density_feat
WHERE cluster_id = 1
AND feature <> 0
如果 feature
中的所有值列是 0
, feature <> 0
条件产生一组空行和 AVG()
返回 NULL
.函数IFNULL()
当第一个参数是 NULL
时返回它的第二个参数.
关于mysql - SQL 中除 0 以外的值的平均值(除 0 外是唯一值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639808/