在PostgreSQL聚合函数sum()中,如果组中只有一个值为null的成员,则返回null:SELECT sum(null::integer);
给出null。如果组中有多个增编,其中至少有一个不是null,则剩余的值为null的加载项将转换为0,然后将所有加载项之和。因此,组和( null,null,3,0,1)返回4,而不是SELECT null::integer + null::integer + 3 + 0 + 1;
所做的null。当组中至少有一个增编为空时,是否有方法使函数和返回为空?这将与operator+的行为相一致,并对我的情况有所帮助。
发布于 2021-12-16 11:00:15
您可以使用预期的行为创建自己的聚合:
CREATE OR REPLACE FUNCTION sum_null(x anyelement, y anyelement)
RETURNS anyelement LANGUAGE sql AS $$
SELECT x + y ; $$ ;
CREATE OR REPLACE AGGREGATE sum_null(x anyelement)
( SFUNC = sum_null, STYPE = anyelement, INITCOND = 0) ;
参见[医]小提琴中的测试结果
https://stackoverflow.com/questions/70377589
复制相似问题