Argmax

ordering-functions argmax

syntax

  • argmax(a, b, .. , n)

definition

argmax(a, b, .. , n) results in a uint32 data-item with the order number of the argument with the highest value for the element-by-element comparison.

The domain-unit of the resulting item is the same as the domain units of all arguments of the function.

The values-unit of the resulting item is value-type of the domain unit of all arguments of the function. But it is by default a uint32. For other value types use for example argmax_uint8(a, b, .. , n).

If the highest value occurs more than once, the function returns the first order number.

null is considered lower than any other value.

NB, also consider the other ArgMax options: argmax_alldefined and argmax_ifdefined

applies to

Data items with a numeric or string value type

conditions

  1. Domain of the arguments must match or be void.
  2. Arguments must have matching:

example

attribute<uint32> argmaxABC (DomDomain) := argmax(A, B, C);
A(int32),
sequencenr: 0
B(int32),
sequencenr: 1
C(int32),
sequencenr: 2
argmaxABC
0 1 2 2
1 -1 4 2
-2 2 2 1
4 0 7 2
999 111 -5 0
2 null 1 0
0 1 null 1
null 1 2 2
null null null 0
1 1 1 0

DomDomain, nr of rows = 10

In earlier versions (before 7.202) a null value in one of the arguments could result in a null value of the resulting data item.

see also