如何将空行转换为0并使用DB2对整个列求和?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将空行转换为0并使用DB2对整个列求和?相关的知识,希望对你有一定的参考价值。
我使用以下查询来对整个列求和。在TOREMOVEALLPRIV列中,我有整数和空值。我想将null和整数值相加并打印总和值。
这是我的查询,它将和值打印为null。
select
sum(URT.PRODSYS) as URT_SUM_PRODSYS,
sum(URT.Users) as URT_SUM_USERS,
sum(URT.total_orphaned) as URT_SUM_TOTAL_ORPHANED,
sum(URT.Bp_errors) as URT_SUM_BP_ERRORS,
sum(URT.Ma_errors) as URT_SUM_MA_ERRORS,
sum(URT.Pp_errors) as URT_SUM_PP_ERRORS,
sum(URT.REQUIREURTCBN) as URT_SUM_CBNREQ,
sum(URT.REQUIREURTQEV) as URT_SUM_QEVREQ,
sum(URT.REQUIREURTPRIV) as URT_SUM_PRIVREQ,
sum(URT.cbnperf) as URT_SUM_CBNPERF,
sum(URT.qevperf) as URT_SUM_QEVPERF,
sum(URT.privperf) as URT_SUM_PRIVPERF,
sum(URT.TO_REMOVEALLPRIV) as TO_REMOVEALLPRIV_SUM
from
URTCUSTSTATUS URT
inner join CUSTOMER C on URT.customer_id=C.customer_id;
输出图像:
预期的输出量:
而不是null我需要打印具有整数的行的总和。
答案
SUM
函数会自动为您处理。你说这个专栏混合了NULL
和数字; SUM
会自动忽略NULL
值并正确返回数字的总和。你可以在IBM Knowledge Center上阅读:
该函数通过消除空值应用于从参数值派生的值集。
注意:除NULL
函数外,所有聚合函数都忽略COUNT
值。示例:如果您有两个值为5
和NULL
的记录,则SUM
和AVG
函数都将返回5
,但COUNT
函数将返回2
。
但是,你似乎误解了为什么你得到NULL
的结果。这是坚果,因为该列包含null
值,这是因为没有选择记录。当SUM
函数返回NULL
时,这是唯一的情况。如果要在这种情况下返回零,可以使用COALESCE
或IFNULL
函数。这两种情况都是相同的:
COALESCE(sum(URT.TO_REMOVEALLPRIV), 0) as TO_REMOVEALLPRIV_SUM
要么
IFNULL(sum(URT.TO_REMOVEALLPRIV), 0) as TO_REMOVEALLPRIV_SUM
我猜你想对查询中的所有其他列做同样的事情,所以我不确定为什么你只抱怨TO_REMOVEALLPRIV
列。
另一答案
您正在寻找的是COALESCE
功能:
select
sum(URT.PRODSYS) as URT_SUM_PRODSYS,
sum(URT.Users) as URT_SUM_USERS,
sum(URT.total_orphaned) as URT_SUM_TOTAL_ORPHANED,
sum(URT.Bp_errors) as URT_SUM_BP_ERRORS,
sum(URT.Ma_errors) as URT_SUM_MA_ERRORS,
sum(URT.Pp_errors) as URT_SUM_PP_ERRORS,
sum(URT.REQUIREURTCBN) as URT_SUM_CBNREQ,
sum(URT.REQUIREURTQEV) as URT_SUM_QEVREQ,
sum(URT.REQUIREURTPRIV) as URT_SUM_PRIVREQ,
sum(URT.cbnperf) as URT_SUM_CBNPERF,
sum(URT.qevperf) as URT_SUM_QEVPERF,
sum(URT.privperf) as URT_SUM_PRIVPERF,
sum(COALESCE(URT.TO_REMOVEALLPRIV,0)) as TO_REMOVEALLPRIV_SUM
from
URTCUSTSTATUS URT
inner join CUSTOMER C on URT.customer_id=C.customer_id;
以上是关于如何将空行转换为0并使用DB2对整个列求和?的主要内容,如果未能解决你的问题,请参考以下文章