Сумма нулей для возврата нуля - PullRequest
0 голосов
/ 28 мая 2018

Как заставить sum(array[*].value) возвращать NULL, если все значения NULL или нет значений?

В настоящее время он возвращает 0 в обоих случаях

Лучшее, что я могу придумать, это

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

, которому необходимо дважды повторить сбор

Есть лилучший способ сделать это?

1 Ответ

0 голосов
/ 28 мая 2018

Как насчет использования цикла FOR вместо сокращенной записи и фильтрации нулевых значений?Затем мы можем проверить, остались ли нулевые элементы, и вернуть ноль:

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

Вы также можете использовать встроенное выражение массива , но оно примерно столько же символов:

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