FirstSortedValue
A função FirstSortedValue() retorna o valor da expressão especificada em value que corresponde ao resultado da classificação do argumento sort_weight, levando em consideração o rank, se especificado. Se mais de um valor resultante compartilhar o mesmo sort_weight para o rank, especificado, a função retorna NULL.
Sintaxe:
FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])
Tipo de dados de retorno: dual
Argumentos:
- 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 é 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. O qualificador TOTAL pode vir seguido de uma lista de um ou mais nomes de campos dentro de sinais de maior e menor que <fld>. Esses nomes de campos devem ser um subconjunto das variáveis de dimensões do gráfico.
Exemplos:
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 '|');
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 |