在 PostgreSQL 聚合函式 sum() 中,如果組中只有一個值為 null 的成員,則回傳 null:
SELECT sum(null::integer);給出 null。如果該組中有多個附錄且其中至少有一個不為空,則剩余值為 null 的附錄將轉換為 0,然后將所有附錄相加。所以組的總和 (null, null, 3, 0, 1) 回傳 4,而不是 null
SELECT null::integer null::integer 3 0 1;。當組中至少一個附錄為空時,有沒有辦法讓函式 sum 回傳空?它與 operator 行為一致,對我的情況很有幫助。
uj5u.com熱心網友回復:
您可以使用預期的行為創建自己的聚合:
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) ;
在dbfiddle中查看測驗結果
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383300.html
標籤:PostgreSQL的 和 总计的
