# FirstSortedValue - fonction de graphique

FirstSortedValue() renvoie la valeur de l'expression spécifiée dans value qui correspond au résultat du tri de l'argument sort\_weight, par exemple, le nom du produit ayant le prix unitaire le plus bas. Il est possible de spécifier la nième valeur dans l'ordre de tri dans l'argument rank. Si plusieurs valeurs résultantes partagent le même champ sort\_weight pour la fonction rank spécifiée, la fonction renvoie la valeur NULL.

FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [&lt;fld {,fld}&gt;]] value, sort\_weight [,rank])

double

Arguments

| Argument | Description |
| --- | --- |
| value | Champ de sortie. La fonction détermine la valeur de l'expression value correspondant au résultat du tri du champ sort\_weight. |
| sort\_weight | Champ de saisie. Expression contenant les données à trier. La première valeur (la plus faible) de sort\_weight est identifiée, ce qui permet de déterminer la valeur correspondante de l'expression value. Si vous placez un signe moins devant sort\_weight, la fonction renvoie alors la dernière valeur triée (la plus élevée). |
| rank | Si vous spécifiez une valeur rank "n" supérieure à 1, vous obtenez la nième valeur triée. |
| SetExpression | Par défaut, la fonction d'agrégation couvre l'ensemble des enregistrements possibles définis par la sélection. Il est possible de définir un ensemble d'enregistrements alternatif à l'aide d'une expression d'analyse d'ensembles. |
| DISTINCT | Si le terme DISTINCT précède les arguments de la fonction, les doublons résultant de l'évaluation des arguments de la fonction sont ignorés. |
| TOTAL | Si le terme TOTAL précède les arguments de la fonction, le calcul est effectué à partir de toutes les valeurs possibles au vu des sélections actives, et pas seulement à partir de celles qui sont associées à la valeur dimensionnelle active. Autrement dit, les dimensions du graphique ne sont pas prises en compte.<br><br>En utilisant TOTAL [&lt;fld {.fld}&gt;], où le qualificateur TOTAL est suivi d'un ou de plusieurs noms constituant un sous-ensemble des variables de dimension du graphique, vous créez un sous-ensemble du nombre total de valeurs possibles.<br><br>[Définition de l'étendue d'une agrégation](https://help.qlik.com/fr-FR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Exemple : Expressions de graphique

| Exemple | Résultat |
| --- | --- |
| `FirstSortedValue (Product, UnitPrice)` | Renvoie le produit `Product` avec le prix unitaire `UnitPrice` le plus bas. |
| `FirstSortedValue (Product, UnitPrice, 2)` | Renvoie le produit `Product` avec le deuxième prix unitaire `UnitPrice` le plus bas. |
| `FirstSortedValue (Customer, -UnitPrice, 2)` | Renvoie le client `Customer` avec le produit `Product` qui a le deuxième prix unitaire `UnitPrice` le plus élevé. |
| `FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` | Renvoie le client `Customer` avec la deuxième valeur de commande la plus élevée, `UnitPrice` (prix unitaire), multipliée par les ventes unitaires `UnitSales`. |

## Exemple - Les bases de FirstSortedValue

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

#### Expression de graphique

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champs suivants dans la table de données :

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme mesures :

* `=FirstSortedValue (Product, UnitPrice)`, pour calculer le produit avec le prix unitaire le plus bas.

* `=FirstSortedValue (Product, UnitPrice, 2)`, pour calculer le produit avec le deuxième prix unitaire le plus bas.

* `=FirstSortedValue (Customer, -UnitPrice, 2)`, pour calculer le client avec le produit qui a le deuxième prix unitaire le plus élevé.

* `=FirstSortedValue (Customer, UnitPrice, 3)`, pour calculer le client avec le produit qui a le troisième prix unitaire le plus élevé.

* `=FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)`, pour calculer le client avec la deuxième valeur de commande la plus élevée, `UnitPrice` (prix unitaire), multipliée par les ventes unitaires `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 |

La première colonne renvoie la valeur `BB`, car il s'agit du produit qui a le prix unitaire `UnitPrice` le plus bas (`9`).

La deuxième colonne renvoie la valeur `BB`, car il s'agit du produit qui a le deuxième prix unitaire `UnitPrice` le plus bas (`10`).

La troisième colonne renvoie la valeur `Betacab`, qui est le client `Customer` avec le produit `Product` qui a le deuxième prix unitaire `UnitPrice` le plus élevé (`20`).

La quatrième colonne renvoie `NULL`, car il existe deux valeurs de client `Customer` (`Astrida` et `Canutility`) avec le prix unitaire `UnitPrice` au même niveau (troisième prix unitaire le plus bas) (`15`).

La cinquième colonne renvoie `Canutility`, qui est le client `Customer` avec la deuxième valeur de commande la plus élevée, `UnitPrice` (prix unitaire), multipliée par les ventes unitaires `UnitSales` (`120`).

## Exemple - Scénario FirstSortedValue

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

#### Expression de graphique

Vue d'ensemble

Un jeu de données contient les chiffres de ventes des trois premiers mois de l'année. Le directeur régional souhaite identifier les produits les plus et les moins vendus afin de planifier les stocks futurs.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champs suivants dans la table de données :

  * `Date`

  * `SalesProduct`

  * `Category`

  * `Sales`

Script de chargement

```
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
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* `Category`

Créez les mesures suivantes :

* `=FirstSortedValue(SalesProduct, -Sales)`, pour calculer le produit le plus vendu dans chaque catégorie.

* `=FirstSortedValue(TOTAL SalesProduct, -Sales)`, pour calculer le produit le plus vendu en général.

* `=FirstSortedValue(TOTAL SalesProduct, Sales)`, pour calculer le produit le moins vendu en général.

Results table

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

Les résultats indiquent que `Apple` (pomme) et `Carrot` (carotte) sont les produits les plus vendus dans leurs catégories respectives, `Fruit` (fruits) et `Vegetable` (légumes). Toutefois, toutes catégories confondues, `Apple` (pomme) est le produit le plus vendu et `Carrot` (carotte) le moins vendu.

## En savoir plus

* [Analyse d'ensembles](https://help.qlik.com/fr-FR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Définition de l'étendue d'une agrégation](https://help.qlik.com/fr-FR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)