news 2026/8/8 8:28:58

postgreq sum(a) 如果a有null值会有什么影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
postgreq sum(a) 如果a有null值会有什么影响

PostgreSQL 中,使用SUM(a)时如果列a包含NULL值,其行为如下:

核心行为

SUM函数会自动忽略NULL,不会将其视为 0 参与计算。

sql

复制

-- 示例数据 CREATE TABLE test (a INT); INSERT INTO test VALUES (1), (2), (NULL), (3); -- 查询 SELECT SUM(a) FROM test; -- 结果: 6 (即 1+2+3,NULL 被忽略)

关键点

表格

复制

场景结果说明
所有行都是NULLNULL没有可累加的值,返回NULL
部分行是NULLNULL值的总和NULL被自动排除
包含NULL+ 0与非NULL值相同0NULL不同,0会计入,NULL不会

需要注意的情况

1. 全 NULL 返回 NULL

sql

复制

SELECT SUM(a) FROM test WHERE a IS NULL; -- 结果: NULL

2. 与 COUNT 的区别

sql

复制

-- SUM 忽略 NULL SELECT SUM(a), -- 6 COUNT(a), -- 3 (忽略 NULL) COUNT(*) -- 4 (包含 NULL) FROM test;

3. 如果需要将 NULL 视为 0

sql

复制

-- 使用 COALESCE SELECT SUM(COALESCE(a, 0)) FROM test; -- 结果仍然是 6,但语义更清晰 -- 或者在过滤时处理 SELECT SUM(a) FROM test WHERE a IS NOT NULL;

标准符合性

这种行为符合SQL 标准—— 聚合函数(SUM,AVG,MAX,MIN等)都会忽略NULL值,只有COUNT(*)会统计所有行。

⚠️ 注意:这与编程语言中null + number的行为不同,SQL 聚合函数有专门的NULL处理语义。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 17:06:40

[Linux]学习笔记系列 -- [drivers][mmc]mmc_sd

title: mmc_sd categories: linuxdriversmmc abbrlink: 64b4b0cf date: 2026-01-16 14:55:15 tags:linuxdriversmmc https://github.com/wdfk-prog/linux-study 文章目录 drivers/mmc/core/sd_ops.cdrivers/mmc/core/sd_uhs2.c SD UHS-II总线管理(SD UHS-II Bus Management) 实…

作者头像 李华
网站建设 2026/8/2 9:31:07

SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案

SpringBoot 优雅处理金额格式化:拦截器自定义注解方案一、核心思路二、实现步骤1. 创建自定义注解 AmountFormat2. 编写金额格式化拦截器3. 注册拦截器并配置拦截路径4. 在实体类字段上使用注解 三、拦截器执行时机说明四、注意事项五、方案优势六、总结 SpringBoot…

作者头像 李华
网站建设 2026/8/4 6:14:33

*QuillBot

QuillBot是一款集合了多种功能的AI文字处理工具包,主要帮助用户优化英文写作。它就像一套智能的文字处理工具,可以帮你调整句子、检查错误、提炼重点。 一、它是什么 QuillBot的核心是一个AI驱动的文本改写和优化引擎。你可以把它理解为一个功能丰富的…

作者头像 李华
网站建设 2026/7/31 6:21:36

例说FPGA:可直接用于工程项目的第一手经验【2.9】

12.7 Verilog代码解析 本实例分为4个层级,大大小小共计25个模块,其层次结构如图12-27所示。 各个模块的基本功能定义如表12-2所示。 表12-2 Verilog各个模块功能描述 1.vip.v模块代码解析 略。 2.sys_ctrl.v模块代码解析 略,请参考例程工程实例1。 3.ddr2_controlle…

作者头像 李华