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.
Sintaxe:
Tipo de dados de retorno: dual
Argumentos:
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. |
Exemplos e resultados:
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 UnitSales do menor para o maior, procurando o 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, AA 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. |