Mysql SQL中除0以外的值的平均值(除0为唯一值)
我希望AVG从可以包含0的值列表中排除0,除非0是唯一可用的值(或者至少只有一行,值正好是0) 目前我使用Mysql SQL中除0以外的值的平均值(除0为唯一值),mysql,sql,Mysql,Sql,我希望AVG从可以包含0的值列表中排除0,除非0是唯一可用的值(或者至少只有一行,值正好是0) 目前我使用 SELECT AVG (NULLIF(feature, 0)) from cluster_density_feat where cluster_id=1; 但如果特征值cluster\u id只有一行且其特征值为0,或者如果此cluster\u id的每一行只有零值,则返回NULL 如何实现这一点?您可以使用WHERE子句来排除0值,如果您想得到0,如果没有0以外的其他值,请使用co
SELECT AVG (NULLIF(feature, 0))
from cluster_density_feat
where cluster_id=1;
但如果特征值cluster\u id只有一行且其特征值为0,或者如果此cluster\u id的每一行只有零值,则返回NULL
如何实现这一点?您可以使用WHERE子句来排除0值,如果您想得到0,如果没有0以外的其他值,请使用coalesce来得到0,coalesce是一个函数,如果第一个值不为NULL,它将得到括号之间的第一个值,如果第一个值为NULL,它将返回第二个值
SELECT COALESCE(AVG(feature),0)
from cluster_density_feat
where cluster_id=1
AND NOT feature = 0
您可以使用WHERE子句来排除0值,如果您希望在除0之外没有其他值的情况下获得0,请使用coalesce来获得0,coalesce是一个函数,如果第一个值为NULL,则将获得括号之间的第一个值,如果第一个值为NULL,则将返回第二个值
SELECT COALESCE(AVG(feature),0)
from cluster_density_feat
where cluster_id=1
AND NOT feature = 0
当功能为0时不包括它
SELECT AVG(feature)
FROM cluster_density_feat
WHERE cluster_id = 1
AND feature != 0;
当功能为0时不包括它
SELECT AVG(feature)
FROM cluster_density_feat
WHERE cluster_id = 1
AND feature != 0;
AVG()
使用组中的所有值,它不能排除0
s。您应该使用WHERE
子句排除它们
SELECT IFNULL(AVG(feature), 0)
FROM cluster_density_feat
WHERE cluster_id = 1
AND feature <> 0
选择IFNULL(平均值(特征),0)
从集群密度专长
其中cluster_id=1
和功能0
如果feature
列中的所有值都是0
,则feature 0
条件产生一组空行,并且AVG()
返回NULL
。当第一个参数为NULL
AVG()
时,函数IFNULL()
返回其第二个参数,它使用组中的所有值,不能排除0
s。您应该使用WHERE
子句排除它们
SELECT IFNULL(AVG(feature), 0)
FROM cluster_density_feat
WHERE cluster_id = 1
AND feature <> 0
选择IFNULL(平均值(特征),0)
从集群密度专长
其中cluster_id=1
和功能0
如果feature
列中的所有值都是0
,则feature 0
条件产生一组空行,并且AVG()
返回NULL
。函数IFNULL()
在第一个参数为NULL
时返回第二个参数