首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用聚合函数的COALESCE和NULLIF

使用聚合函数的COALESCE和NULLIF
EN

Stack Overflow用户
提问于 2017-07-21 21:26:48
回答 1查看 2.5K关注 0票数 1

在关注了我能找到的每一个帖子之后,我很想得到一些关于我可能做错了什么的输入。我正在使用Coalesce聚合许多int2字段。只有当每个字段都有值时,我才会获得值;如果任何地方都有空值(这很常见),那么整个聚合的结果就是空值。我知道nullif()函数可以用像0这样的可用值替换空值,但是无论我做什么,我要么得到一个错误,要么得到一个0作为整个聚合的结果。感谢任何人的帮助!

代码如下:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 21:40:49

你得申请

代码语言:javascript
复制
COALESCE(<expression>, 0)

添加到组成总和的每个表达式中。

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

因此,该条目将被计算为

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45238907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档