FirstSortedValue - função de gráfico

FirstSortedValue() retorna o valor da expressão especificada em value que corresponde ao resultado de classificação do argumento sort_weight, por exemplo, o nome do produto com o menor preço de unidade. O valor nth na ordem de classificação pode ser especificado em rank. Se mais de um valor resultante compartilhar o mesmo sort_weight para o rank, especificado, a função retorna NULL.

Syntax:  

FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])

Return data type: valor duplo

Arguments:  

Argumento Descrição
value Campo de saída. A função encontra o valor da expressão value que corresponde ao resultado de classificação sort_weight.
sort_weight

Campo de entrada. A expressão que contém os dados que serão classificados. O primeiro valor (mais baixo) de sort_weight é encontrado, a partir do qual o valor correspondente da expressão value é determinado. Ao colocar um sinal de menos na frente de sort_weight, a função retorna o último (mais alto) valor classificado em seu lugar.

rank

Se for especificado um rank "n" maior que 1, será obtido o enésimo valor classificado.

SetExpression Por padrão, a função de agregação agregará um conjunto de registros possíveis definidos pela seleção. Um conjunto de registros alternativos pode ser definido por uma expressão de análise.
DISTINCT Se a palavra DISTINCT aparecer antes dos argumentos de função, as duplicatas resultantes da avaliação dos argumentos de função serão ignoradas.
TOTAL

Se a palavra TOTAL ocorrer antes dos argumentos da função, o cálculo será feito sobre todos os valores possíveis, dadas as seleções atuais, e não apenas sobre os pertinentes ao valor dimensional atual, isto é, desconsiderando as dimensões do gráfico.

Usando TOTAL [<fld {.fld}>], em que o qualificador TOTAL é seguido por uma lista de um ou mais nomes de campo como um subconjunto das variáveis de dimensão de gráfico, você cria um subconjunto dos valores possíveis totais.

Definindo o escopo de agregação

Examples and results:  

Customer Product UnitSales UnitPrice
Astrida AA 4 16
Astrida AA 10 15
Astrida BB 9 9
Betacab BB 5 10
Betacab CC 2 20
Betacab DD - 25
Canutility AA 8 15
Canutility CC - 19
Exemplo Resultado
firstsortedvalue (Product, UnitPrice)

BB, que é o Productcom o menor UnitPrice(9).

firstsortedvalue (Product, UnitPrice, 2)

BB, que é o Productcom o segundo menor UnitPrice(10).

firstsortedvalue (Customer, -UnitPrice, 2)

Betacab, que é o Customercom o Product com o segundo maior UnitPrice(20).

firstsortedvalue (Customer, UnitPrice, 3)

NULL, porque existem dois valores de Customer (Astrida eCanutility) com o mesmo rank (terceiro menor) UnitPrice(15).

Use o qualificador distinct para se certificar de que resultados nulos não ocorrerão.

firstsortedvalue (Customer, -UnitPrice*UnitSales, 2)

Canutility, que é o Customer com o segundo maior valor de ordem de venda UnitPrice multiplicado por UnitSales (120).

Dados usados nos exemplos:

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD||25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');