查询计算包括NULL的值的平均值

Posted

技术标签:

【中文标题】查询计算包括NULL的值的平均值【英文标题】:Query calculating average of values including NULL 【发布时间】:2020-09-01 21:31:26 【问题描述】:

我有一个查询如下:

UPDATE table SET result = ROUND((col1 + col2)/2, 2);

如果 col1 和 col2 中都有值,这很好,但如果其中一个为 null,则返回 null。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

你可以这样做:

UPDATE table 
SET result = ROUND(
    (coalesce(col1, 0) + coalesce(col2, 0)
    / nullif( (col1 is not null) + (col2 is not null), 0), 
2);

分子将两列相加,同时将null 值转换为0。分母计算有多少值不是null。换句话说,如果有两个非null 值,你会得到它们的平均值,而如果只有一个,你会得到值本身。

如果两个值都是null,则result 仍然是null(这似乎是相关的事情)。

【讨论】:

谢谢 - coalesce(colx, 0) 成功了。非常感谢。

以上是关于查询计算包括NULL的值的平均值的主要内容,如果未能解决你的问题,请参考以下文章

MySQL使用笔记统计函数和分组数据记录查询

将一个表中的值与另一表中具有相同属性的值的平均值计算进行比较

如何在不包括最后一个值(sql)的情况下计算值的平均值?

SQL查询中用到的函数

计算R中列中NA的前后值的平均值

如果单元格值包含列名,则 Excel 行中的值的平均值