mysql - 使用 AVG 时排除带有 "0"的条目

标签 mysql

我有一个名为“numbers”的数字 mysql 数据库字段,其中有 10 个条目,数字范围为 0-10。

我想找到这个的平均值,但不包括数字 = 0 的所有条目。 但我还想计算有多少条目 - 包括 number = 0 的条目。

所以我不能只添加一个 WHERE 数字!=0,因为那样会在我的 COUNT 中给出错误的结果。

所以我需要类似的东西。

AVG(if(numbers!=0)) AS average

最佳答案

这个怎么样?

select avg(nullif(field, 0)) from table;

请注意此方法如何不强制您使用 where 子句,以防您希望将其用作您一般不希望排除零值的较大查询的一部分.

另外,顺便说一下,avg 会跳过null 值,所以在上面的例子中我们使用了nullif 来将0 值转换为 null 值。如果您使用 null 值来表示不应考虑平均值的值(例如,如果 0 是合法值),则只需使用 平均(字段)

关于mysql - 使用 AVG 时排除带有 "0"的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871775/

相关文章:

sql - 修改元组值的 MYSQL Select 语句

mysql - 合并 2 个表 - 子查询返回多于 1 行

php - 如何在文本区域中将数据库中的 <br/> 显示为 HTML 而不是文本?

mysql - GROUP BY 聚合和 INNER JOIN

php - 访问Laravel数据库时无输出

python - 为什么我会收到此错误:Not allparameters wereused in the SQL statements using python?

mysql - MariaDB 如何避免错误 NOT NULL DEFAULT

mysql - 如何在同一查询中从具有不同条件的表中选择数据

Mysql 全文搜索不适用于特殊字符

mysql - 按月分组并显示剩余总天数