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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值