# FirstSortedValue — функция диаграммы

Параметр FirstSortedValue() возвращает значение из выражения, указанного в элементе value. Значение элемента соответствует результату сортировки по аргументу sort\_weight, например, названию продукта с самой низкой стоимостью единицы. N-ное значение в порядке сортировки можно указать в rank. Если в результате больше одного значения имеют один и тот же элемент sort\_weight для указанного элемента rank, функция возвращает значение NULL.

Синтаксис:

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

Возвращаемые типы данных: двойное значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| value | Поле вывода. С помощью функции можно найти значение выражения value, которое соответствует результату сортировки поля sort\_weight. |
| sort\_weight | Поле ввода. Выражение, содержащее данные для сортировки. Обнаружено первое (нижнее) значение элемента sort\_weight, на основе которого определяется соответствующее значение выражения value. Если указать знак минуса перед элементом sort\_weight, функция вернет последнее (самое высокое) отсортированное значение. |
| rank | При указании для элемента rank значения «n» выше 1 будет получено n-ое отсортированное значение. |
| SetExpression | По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. Альтернативный набор записей может быть определен выражением анализа множества. |
| DISTINCT | Если слово DISTINCT указывается до аргументов функции, все дубликаты, возникшие в результате оценки аргументов функции, будут проигнорированы. |
| TOTAL | Если слово TOTAL стоит перед аргументами функции, вычисление выполняется по всем возможным значениям, указанным в текущих выборках, а не только в тех, которые относятся к значению текущего измерения, т. е. измерения диаграммы игнорируются.<br><br>При использовании выражения TOTAL [&lt;fld {.fld}&gt;], где префикс TOTAL предшествует списку из одного или нескольких имен полей, выступающих в качестве подмножества переменных измерения диаграммы, создается подмножество всех возможных значений.<br><br>[Определение объема агрегирования](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Пример: выражения диаграммы

| Пример | Результат |
| --- | --- |
| `FirstSortedValue (Product, UnitPrice)` | Возвращает `Product` с наименьшим значением `UnitPrice`. |
| `FirstSortedValue (Product, UnitPrice, 2)` | Возвращает `Product` со вторым наименьшим значением `UnitPrice`. |
| `FirstSortedValue (Customer, -UnitPrice, 2)` | Возвращает `Customer` с `Product`, который имеет второе наибольшее значение `UnitPrice`. |
| `FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` | Возвращает `Customer` со вторым наибольшим значением суммы заказа на продажу ― `UnitPrice`, умноженное на `UnitSales`. |

## Пример. Основы использования функции FirstSortedValue

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

#### Выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

Скрипт загрузки

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

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как меры:

* `=FirstSortedValue (Product, UnitPrice)`, чтобы вычислить продукт с наименьшей ценой за единицу.

* `=FirstSortedValue (Product, UnitPrice, 2)`, чтобы вычислить продукт с второй наименьшей ценой за единицу.

* `=FirstSortedValue (Customer, -UnitPrice, 2)`, чтобы вычислить клиента с продуктом, который имеет вторую наибольшую цену за единицу.

* `=FirstSortedValue (Customer, UnitPrice, 3)`, чтобы вычислить клиента с продуктом, который имеет третью наибольшую цену за единицу.

* `=FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)`, чтобы вычислить клиента со вторым наибольшим значением суммы заказа на продажу ― `UnitPrice`, умноженное на `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 |

Первый столбец возвращает значение `BB`, поскольку этот продукт имеет наименьшее значение `UnitPrice` (`9`).

Второй столбец возвращает значение `BB`, поскольку этот продукт имеет второе наименьшее значение `UnitPrice` (`10`).

Третий столбец возвращает значение `Betacab`, которое представляет собой `Customer` с `Product`, имеющим второе наибольшее значение `UnitPrice` (`20`).

Четвертый столбец возвращает значение `NULL`, потому что существует два значения `Customer` (`Astrida` и `Canutility`) с одинаковым значением `UnitPrice` (третьим наименьшим) (`15`).

Пятый столбец возвращает значение `Canutility`, которое представляет собой `Customer` со вторым наибольшим значением суммы заказа на продажу ― `UnitPrice` умноженное на `UnitSales` (`120`).

## Пример. Сценарий применения функции FirstSortedValue

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

#### Выражение диаграммы

Обзор

Набор данных содержит показатели продаж за первые три месяца года. Региональный менеджер хочет определить наиболее и наименее продаваемые продукты, чтобы спланировать будущие запасы.

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `Date`

  * `SalesProduct`

  * `Category`

  * `Sales`

Скрипт загрузки

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

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* `Category`

Создайте следующие меры:

* `=FirstSortedValue(SalesProduct, -Sales)`, чтобы вычислить самый продаваемый продукт в каждой категории.

* `=FirstSortedValue(TOTAL SalesProduct, -Sales)`, чтобы вычислить самый продаваемый продукт во всем ассортименте.

* `=FirstSortedValue(TOTAL SalesProduct, Sales)`, чтобы вычислить самый неходовой продукт во всем ассортименте.

Results table

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

Результаты показывают, что `Apple` и `Carrot` являются самыми продаваемыми продуктами в своих категориях, `Fruit` и `Vegetable`. Тем не менее во всех категориях `Apple` был самым продаваемым продуктом, а `Carrot` ― самым неходовым.

## Подробнее

* [Анализ множеств](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Определение объема агрегирования](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)