FirstSortedValue - função de script

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. Os valores classificados são iterativos em número de registros, como definidos por uma cláusula group by, ou agregados em um conjunto de dados completo se nenhuma cláusula group by for definida.

Syntax:  

FirstSortedValue ([ distinct ] value, sort-weight [, rank ])

Return data type: dual

Arguments:  

Argumento Descrição
value Expression A função encontra o valor da expressão value que corresponde ao resultado de classificação sort_weight.
sort-weight Expression 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 Expression

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

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.

Examples and results:  

Adicione o script de exemplo ao seu aplicativo e execute-o. Em seguida, adicione pelo menos os campos listados na coluna de resultados a uma pasta para ver o resultado.

Para obter a mesma aparência que na coluna de resultados abaixo, no painel de propriedades, em Classificação, alterne de Automática para Personalizada e desmarque a classificação numérica e alfabética.

Exemplo Resultado

Temp:

LOAD * inline [

Customer|Product|OrderNumber|UnitSales|CustomerID

Astrida|AA|1|10|1

Astrida|AA|7|18|1

Astrida|BB|4|9|1

Astrida|CC|6|2|1

Betacab|AA|5|4|2

Betacab|BB|2|5|2

Betacab|DD|12|25|2

Canutility|AA|3|8|3

Canutility|CC|13|19|3

Divadip|AA|9|16|4

Divadip|AA|10|16|4

Divadip|DD|11|10|4

] (delimiter is '|');

 

FirstSortedValue:

LOAD Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithSmallestOrderByCustomer

Astrida CC

Betacab AA

Canutility AA

Divadip DD

A função classifica o UnitSales do menor para o maior registro do valor de Customer com o menor valor de UnitSales, o menor pedido.

Como CC corresponde ao menor valor de pedido (valor de UnitSales=2) para o cliente Astrida. AA corresponde ao menor pedido (4) para o cliente Betacab, CC corresponde ao menor pedido (8) para o clienteCanutility, e DD corresponde ao menor pedido (10) para o clienteDivadip..

Dado que a tabela Temp é carregada como no exemplo anterior:

LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

Um sinal de menor precede o argumento sort_weight, assim a função classifica primeiro o maior.

Porque AA corresponde ao maior pedido (valor de UnitSales:18) do cliente Astrida, DD corresponde ao maior pedido (12) do cliente Betacab e CC corresponde ao maior pedido (13) do cliente Canutility. Há dois valores idênticos no maior pedido (16) para o cliente Divadip, portanto, isso produz um resultado nulo.

Dado que a tabela Temp é carregada como no exemplo anterior:

LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

É o mesmo que o exemplo anterior, exceto que o qualificador distinct é usado. Isso causa resultado duplicado para Divadip ser desconsiderado, permitindo que seja retornado um valor não nulo.