gpt4 book ai didi

postgresql - 具有聚合函数的 COALESCE 和 NULLIF

转载 作者:行者123 更新时间:2023-11-29 13:48:04 25 4
gpt4 key购买 nike

在关注了我能找到的每一个线程但没有让它工作之后,我很想得到一些关于我可能做错了什么的意见。我正在使用 Coalesce 聚合许多 int2 字段。只有当每个字段都有值时,我才会得到值;如果任何地方都有空值(这很常见),则整个聚合的结果为空。我知道 nullif() 函数可以用 0 等可用值替换空值,但无论我做什么,我要么得到一个错误,要么得到 0 作为整个聚合的结果。任何帮助表示赞赏!

代码如下:

SELECT
"public".jam_fodder_productivity.cows,
"public".jam_fodder_productivity.sheep,
"public".jam_fodder_productivity.lamb,
"public".jam_fodder_productivity.horse,
"public".jam_fodder_productivity.ungneyti,
COALESCE(jam_fodder_productivity.cows + (jam_fodder_productivity.ungneyti / 2::double precision) + (jam_fodder_productivity.horse / 2::double precision) + (jam_fodder_productivity.sheep / 6::double precision) + (jam_fodder_productivity.lamb / 12::double precision)) AS total_productivity
FROM
"public".jam_fodder_productivity

查询结果如下所示:

coalesce result

最佳答案

你必须申请

COALESCE(<expression>, 0)

构成总和的每个表达式。

否则,如果任何表达式为 NULL,则整个总和变为 NULL。

因此条目将被计算为

COALESCE(jam_fodder_productivity.cows, 0)
+ COALESCE(jam_fodder_productivity.ungneyti / 2::double precision, 0)
+ COALESCE(jam_fodder_productivity.horse / 2::double precision, 0)
+ COALESCE(jam_fodder_productivity.sheep / 6::double precision, 0)
+ COALESCE(jam_fodder_productivity.lamb / 12::double precision, 0)
AS total_productivity

关于postgresql - 具有聚合函数的 COALESCE 和 NULLIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45238907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com