# 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 [&lt;fld {,fld}&gt;]] 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.<br><br>Usando TOTAL [&lt;fld {.fld}&gt;], 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.<br><br>[Definindo o escopo de agregação](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Exemplo: expressões de gráfico

| Exemplo | Resultado |
| --- | --- |
| `FirstSortedValue (Product, UnitPrice)` | Retorna o `Product` com o menor `UnitPrice`. |
| `FirstSortedValue (Product, UnitPrice, 2)` | Retorna o `Product` com o segundo menor `UnitPrice`. |
| `FirstSortedValue (Customer, -UnitPrice, 2)` | Retorna o `Customer` com o `Product` que tem o segundo maior `UnitPrice`. |
| `FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` | Retorna o `Customer` com o segundo maior valor de pedido de venda, `UnitPrice`, multiplicado por `UnitSales`. |

## Exemplo - Fundamentos de FirstSortedValue

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/firstsortedvalue.htm)

#### Expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

Script de carregamento

```
Example:
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 '|');
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione estes campos como medidas:

* `=FirstSortedValue (Product, UnitPrice)` para calcular o produto com o menor preço unitário.

* `=FirstSortedValue (Product, UnitPrice, 2)` para calcular o produto com o segundo menor preço unitário.

* `=FirstSortedValue (Customer, -UnitPrice, 2)` para calcular o cliente com o produto que tem o segundo maior preço unitário.

* `=FirstSortedValue (Customer, UnitPrice, 3)` para calcular o cliente com o produto que tem o terceiro maior preço unitário.

* `=FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` para calcular o cliente com o produto que tem o terceiro maior preço unitário, `UnitPrice` multiplicado por `UnitSales`.

Results table

| FirstSortedValue (Product, UnitPrice) | FirstSortedValue (Product, UnitPrice, 2) | FirstSortedValue (Customer, -UnitPrice, 2) | FirstSortedValue (Customer, UnitPrice, 3) | FirstSortedValue (Customer, -UnitPrice\*UnitSales, 2) |
| --- | --- | --- | --- | --- |
| BB | BB | Betacab | - | Canutility |

A primeira coluna retorna o valor `BB`, pois esse é o produto que tem o menor `UnitPrice` (`9`)

A segunda coluna retorna o valor `BB` pois este é o produto com o segundo menor `UnitPrice` (`10`).

A terceira coluna retorna o valor `Betacab`, que é o `Customer` com o `Product` que tem o segundo maior `UnitPrice` (`20`).

A quarta coluna retorna `NULL`, porque existem dois valores de `Customer` (`Astrida` e `Canutility`) com a mesma classificação (terceira mais baixa) `UnitPrice` (`15`).

A quinta coluna retorna `Canutility`, que é o `Customer` com o segundo maior valor de pedido de venda, `UnitPrice` multiplicado por `UnitSales` (`120`).

## Exemplo - Cenário de FirstSortedValue

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/firstsortedvalue.htm)

#### Expressão de gráfico

Visão geral

Um conjunto de dados contém números de vendas dos três primeiros meses do ano. O gerente regional quer identificar os produtos mais e menos vendidos para planejar o estoque futuro.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `Date`

  * `SalesProduct`

  * `Category`

  * `Sales`

Script de carregamento

```
Example:
Load * inline [
Date,SalesProduct, Category, Sales
2024-01-01, Apple, Fruit, 100
2024-01-15, Banana, Fruit, 80
2024-01-30, Carrot, Vegetable, 50
2024-02-05, Apple, Fruit, 120
2024-02-20, Banana, Fruit, 90
2024-02-28, Carrot, Vegetable, 60
2024-03-10, Apple, Fruit, 110
2024-03-22, Banana, Fruit, 85
2024-03-31, Carrot, Vegetable, 55
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* `Category`

Crie as seguintes medidas:

* `=FirstSortedValue(SalesProduct, -Sales)` para calcular o produto mais vendido em cada categoria.

* `=FirstSortedValue(TOTAL SalesProduct, -Sales)` para calcular o produto mais vendido no geral.

* `=FirstSortedValue(TOTAL SalesProduct, Sales)` para calcular o produto com menor venda geral.

Results table

| Category | FirstSortedValue(SalesProduct, -Sales) | FirstSortedValue(TOTAL SalesProduct, -Sales) | FirstSortedValue(TOTAL SalesProduct, Sales) |
| --- | --- | --- | --- |
| Fruit | Apple | Apple | Carrot |
| Vegetable | Carrot | Apple | Carrot |

Os resultados indicam que `Apple` e `Carrot` são os produtos mais vendidos em suas respectivas categorias, `Fruit` e `Vegetable`. No entanto, em todas as categorias, `Apple` foi o produto mais vendido e `Carrot` foi o produto menos vendido.

## Saiba mais

* [Análise de conjunto](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Definindo o escopo de agregação](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)