# FirstSortedValue - función de gráfico

FirstSortedValue() devuelve el valor de la expresión especificada en value que corresponde al resultado de ordenar el argumento sort\_weight, por ejemplo, el nombre del producto con el precio unitario más bajo. El enésimo valor según el criterio de ordenación, se puede especificar en rank. Si más de un valor resultante comparten el mismo sort\_weight para el rank especificado, la función devuelve NULL.

Sintaxis:

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

Tipo de datos que devuelve: dual

Argumentos

| Argumento | Descripción |
| --- | --- |
| value | Campo de salida. La función encuentra el valor de la expresión value que corresponde al resultado de la ordenación sort\_weight. |
| sort\_weight | Campo de entrada. La expresión que contiene los datos que se han de ordenar. Se encuentra el primer valor (el más bajo) de sort\_weight, a partir del cual se determina el valor correspondiente de la expresión value. Si coloca un signo menos delante de sort\_weight, la función devuelve el último valor ordenado (el más alto) en su lugar. |
| rank | Al indicar un rank "n" mayor que 1, se obtiene el enésimo valor ordenado. |
| SetExpression | De forma predeterminada, la función de agregación agregará sobre el conjunto de registros posibles definidos por la selección. Se puede definir un conjunto alternativo de registros mediante una expresión de análisis de conjuntos. |
| DISTINCT | Si la palabra DISTINCT aparece antes de los argumentos de la función, los duplicados resultantes de evaluar los argumentos de la función se descartan. |
| TOTAL | Si la palabra TOTAL aparece antes de los argumentos de la función, el cálculo se realiza sobre todos los valores posibles dadas las selecciones actuales y no solo aquellas que pertenecen al valor dimensional actual, es decir, no tiene en cuenta las dimensiones del gráfico.<br><br>Usar TOTAL [&lt;fld {.fld}&gt;], donde al cualificador TOTAL le sigue una lista de uno o más nombres de campo como un subconjunto de las variables de dimensión del gráfico, crea un subconjunto de los valores totales posibles.<br><br>[Definir el ámbito de agregación](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Ejemplo: expresiones de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `FirstSortedValue (Product, UnitPrice)` | Devuelve el `Product` con el `UnitPrice` más bajo. |
| `FirstSortedValue (Product, UnitPrice, 2)` | Devuelve el `Product` con el segundo `UnitPrice` más bajo. |
| `FirstSortedValue (Customer, -UnitPrice, 2)` | Devuelve el `Customer` con el `Product` que tiene el segundo `UnitPrice` más alto. |
| `FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` | Devuelve el `Customer` con el segundo valor de pedidos más alto, `UnitPrice` multiplicado por `UnitSales`. |

## Ejemplo: fundamentos de FirstSortedValue

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

#### Expresión de gráfico

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y añada estos campos como medidas:

* `=FirstSortedValue (Product, UnitPrice)`, para calcular el producto con el precio unitario más bajo.

* `=FirstSortedValue (Product, UnitPrice, 2)`, para calcular el producto con el segundo precio unitario más bajo.

* `=FirstSortedValue (Customer, -UnitPrice, 2)`, para calcular el cliente con el producto que tiene el segundo precio unitario más alto.

* `=FirstSortedValue (Customer, UnitPrice, 3)`, para calcular el cliente con el producto que tiene el tercer precio unitario más alto.

* `=FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)`, para calcular el cliente con el segundo valor de pedido más alto, `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 |

La primera columna devuelve el valor `BB` ya que es el producto que tiene el valor de `UnitPrice` más bajo (`9`)

La segunda columna devuelve el valor `BB`, ya que se trata del producto con el segundo valor más bajo de `UnitPrice` (`10`).

La tercera columna devuelve el valor `Betacab`, que es el `Customer` con el `Product` que tiene el segundo mayor de `UnitPrice` (`20`).

La cuarta columna devuelve `NULL`, porque hay dos valores de `Customer` (`Astrida` y `Canutility`) con el mismo x rango (el tercero más bajo) `UnitPrice` (`15`).

La quinta columna devuelve `Canutility`, que es el `Customer` con el segundo valor de pedidos más alto, `UnitPrice` multiplicado por `UnitSales` (`120`).

## Ejemplo: escenario de FirstSortedValue

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

#### Expresión de gráfico

Vista general

Un conjunto de datos contiene las cifras de ventas de los tres primeros meses del año. El director regional quiere identificar los productos más y menos vendidos para planificar el inventario futuro.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `Date`

  * `SalesProduct`

  * `Category`

  * `Sales`

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* `Category`

Cree las siguientes medidas:

* `=FirstSortedValue(SalesProduct, -Sales)`, para calcular el producto más vendido de cada categoría.

* `=FirstSortedValue(TOTAL SalesProduct, -Sales)`, para calcular el producto más vendido en general.

* `=FirstSortedValue(TOTAL SalesProduct, Sales)`, para calcular el producto que menos se vende en total.

Results table

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

Los resultados indican que `Apple` y `Carrot` son los productos más vendidos en sus respectivas categorías, `Fruit` y `Vegetable`. Sin embargo, en todas las categorías, `Apple` fue el producto más vendido y `Carrot` el menos vendido.

## Más información

* [Análisis de conjuntos](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Definir el ámbito de agregación](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)