mysql sum null_了解MySQL中的SUM(NULL)

不念不忘少年蓝@ 2023-01-11 08:28 205阅读 0赞

bd96500e110b49cbb3cd949968f18be7.png

Usually when NULL is involved in any equation then the whole result resolves into NULL (e.g. SELECT 2 + NULL + 5 returns NULL)

Same holds for the following case:

SELECT SUM(NULL) returns NULL. Proposition #1

What happens when SUM is used to aggregate a column and the column can contain NULL values too ?

Based on the proposition #1 why the output doesn’t result in NULL.

CREATE TABLE t (age INT NULL);

INSERT INTO t (age) VALUES (15),(20), (NULL), (30), (35);

SELECT

SUM(age)

FROM t;

Output: 100

But I was expecting NULL.

Does MySQL silently skips those NULL values in this case?

解决方案

Well it’s explained in the manual

SUM([DISTINCT] expr)

Returns the sum of expr. If the return set has no rows, SUM() returns

NULL. The DISTINCT keyword can be used to sum only the distinct values

of expr.

SUM() returns NULL if there were no matching rows.

What’s more it’s also said that:

This section describes group (aggregate) functions that operate on

sets of values. Unless otherwise stated, group functions ignore NULL

values.

in other words SUM behaves like this because that’s the way it’s defined to be.

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql sum() NULL 问题

    今天在客户反馈线上数据出现了异常,如下图所示,正常值应该是百分百以内的,而且这个数值是随机出现的,刷新几下可能出现一次。 ![watermark_type_ZmFuZ3poZ

    相关 MySQLNULL和NOT NULL详解

    之前看到有人问到 PHPHub 迁移数据库文件中 nullable 和索引的问题,相信很多用了 MySQL 很久的人(特别是平时过多关注业务开发的人),对这两个字段属性...