返回null的空值总和

时间:2018-05-28 10:57:43

标签: arangodb aql

如何制作 sum(array[*].value)如果所有值都为NULL或没有值,则返回NULL?

目前在两种情况下都返回0

我能想到的最好的是

first_document(array[*].value) ? sum(array[*].value) : null

需要迭代收集两次

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如何使用FOR循环而不是简写符号并过滤掉空值?然后我们可以检查零元素是否保留并返回null:

LET tmp = (FOR elem IN array FILTER elem.value != null RETURN elem)
RETURN LENGTH(tmp) ? SUM(tmp) : null

你也可以使用array inline expression,但它的字符大小相同:

LET tmp = arr[* FILTER CURRENT.value != null RETURN CURRENT.value]
RETURN LENGTH(tmp) ? SUM(tmp) : null