mysql - SQL 中除 0 以外的值的平均值(除 0 外是唯一值)

标签 mysql sql

我想让 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/

相关文章:

mysql在不同的服务器上运行不同的索引

sql - 在 Oracle 中满足条件时重置总和

MySQL ORDER BY 使用文件排序(2 个连接表)

mysql - 计算MySQL中其他平均值的平均值

mysql - 如何将Common table expression查询的Row_number转换为Mysql

mysql - SQL,将一列分组并计算其属性

python - pandas 中类似 SQL 的语句?

mysql - 为第 10 部门工资最低的员工增加 1% 的工资

MySQL 在时间间隔内查找每组的不同值对

PHP PDO bindValue 使用 MySQL IN()?