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.
Sintaxe:
FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])
Tipo de dados de retorno: dual
Argumentos:
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. |
Exemplos e resultados:
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 '|');