You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL命令行直接输入多值调用聚合函数AVG?

PostgreSQL中AVG函数多值计算的正确用法

首先明确:PostgreSQL的AVG()是聚合函数,它的设计是对一组行中的某一列值计算平均,不是直接接收多个独立参数——这就是你SELECT AVG(1,NULL,2,3);报错的核心原因,AVG仅接受单个参数(列名或单个表达式)。

正确计算多个值(含NULL)平均的写法

如果要计算1、NULL、2、3这几个值的平均,有两种常用实现方式:

方法1:用VALUES构造临时表再聚合

SELECT AVG(val) FROM (VALUES (1), (NULL), (2), (3)) AS temp_table(val);

执行后结果为2,因为AVG会自动忽略NULL值,实际计算的是(1+2+3)/3=2。

方法2:用数组+unnest函数展开

SELECT AVG(val) FROM unnest(ARRAY[1, NULL, 2, 3]) AS val;

原理和上方一致:将数组转换成行数据集后再计算平均,同样会自动跳过NULL。

关于NULL值的说明

AVG完全支持处理包含NULL的数据集,PostgreSQL所有标准聚合函数(SUM、COUNT、AVG等)在计算时都会自动忽略NULL值,不会将其纳入计算范围。你之前的SELECT AVG(2);能正常运行,是因为它等价于对一个仅含一行、值为2的列计算平均,结果自然是2。

内容的提问来源于stack exchange,提问作者mangoUnchained

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:45:58