Returns the average of the values in the input sequence $arg, that is, the
sum of the values divided by the number of values.
fn:avg( $arg as xs:anyAtomicType*xs:anyAtomicType?If $arg is the empty sequence, the empty sequence is returned.
If $arg contains values of type xs:untypedAtomic they are cast
to xs:double.
Duration values must either all be xs:yearMonthDuration values or must all
be xs:dayTimeDuration values. For numeric values, the numeric promotion
rules defined in are used to promote all values to a single
common type. After these operations, $arg must satisfy the following condition:
There must be a type T such that:
$arg is an instance of T.xs:double, xs:float,
xs:decimal, xs:yearMonthDuration, or
xs:dayTimeDuration.The function returns the average of the values as sum($arg) div
count($arg); but the implementation may use an otherwise equivalent algorithm
that avoids arithmetic overflow.
let $d1 := xs:yearMonthDuration("P20Y")
let $d2 := xs:yearMonthDuration("P10M")
let $seq3 := (3, 4, 5)
The expression fn:avg($seq3) returns 4.0.
The expression fn:avg(($d1, $d2)) returns xs:yearMonthDuration("P10Y5M").
fn:avg(($d1, $seq3)) raises a type error .
The expression fn:avg(()) returns ().
The expression fn:avg((xs:float('INF'), xs:float('-INF'))) returns xs:float('NaN').
The expression fn:avg(($seq3, xs:float('NaN'))) returns xs:float('NaN').
A type error is raised if the input sequence contains items of incompatible types, as described above.