.. _sum:
===
sum
===
A soma dos valores de uma sequência
Descrição
~~~~~~~~~
A função fn:sum soma os valores de uma sequência. A sequência $arg pode misturar
valores numéricos e sem tipo. Os valores numéricos são promovidos quando preciso
para ficarem todos do mesmo tipo. Valores sem tipo são convertidos em xs:double.
A função também serve para durações: a sequência $arg pode ter só valores
xs:yearMonthDuration ou só valores xs:dayTimeDuration (mas não uma mistura dos
dois).
O argumento $zero define outro valor para a soma da sequência vazia. Se $arg for
a sequência vazia e $zero for informado, a função devolve $zero. $zero pode ser
a sequência vazia, o inteiro 0, o valor NaN, uma duração de zero segundo ou
qualquer outro valor atômico.
.. list-table::
:widths: 40 60
:header-rows: 1
* - **Parâmetros**
- **Descrição**
* - arg:numeric()
- a sequência de valores a somar
* - zero:numeric()
- o valor devolvido quando a sequência é vazia; opcional, 0 por padrão
Exemplos
~~~~~~~~
Os exemplos abaixo usam este documento de entrada:
.. code-block:: xml
.. list-table::
:widths: 50 50
:header-rows: 1
* - **XPath**
- **Resultado**
* - sum( (1, 2, 3) )
- 6
* - sum($ordDoc//item/@quantity)
- 7
* - sum($ordDoc//item/@dept)
- Error FORG0001
* - sum( (xs:yearMonthDuration('P1Y2M'), xs:yearMonthDuration('P2Y3M')) )
- P3Y5M
* - sum( (1, 2, 3, () ) )
- 6
* - sum( (1, 2, xs:yearMonthDuration('P1Y')) )
- Error FORG0006
* - sum( () )
- 0
* - sum( (), () )
- ()
Veja também
~~~~~~~~~~~
.. toctree::
:titlesonly:
:glob:
* :ref:`count`.
* :ref:`avg`.