# FirstSortedValue - チャート関数

FirstSortedValue() は、value で指定した数式から値を返します。これは、単価が最も低い製品の名前など、sort\_weight 引数のソート結果に対応します。rank では、ソート順の n 番目の値を指定できます。指定された 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 | デフォルトでは、集計関数は選択されたレコード セットに対して集計を行います。Set 分析数式でレコード セットを定義することも可能です。 |
| DISTINCT | 関数の引数の前に DISTINCT という用語が付いている場合、関数の引数の評価から生じる重複は無視されます。 |
| TOTAL | 関数の引数の前に TOTAL の文字が配置されている場合、現在の軸の値に関連しているものだけでなく、現在の選択範囲内にあるすべての可能な値に対して計算が実行されます。つまりチャート軸は無視されます。<br><br>TOTAL [&lt;fld {.fld}&gt;] (ここで、TOTAL 修飾子の後には、1 つまたは複数の項目名のリストがチャート軸変数のサブセットとして続く) を使用して、合計絞込値のサブセットを作成できます。<br><br>[集計範囲の定義](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `FirstSortedValue (Product, UnitPrice)` | `UnitPrice` が最も低い `Product` を返します。 |
| `FirstSortedValue (Product, UnitPrice, 2)` | `UnitPrice` が 2 番目に低い `Product` を返します。 |
| `FirstSortedValue (Customer, -UnitPrice, 2)` | `UnitPrice` が 2 番目に大きい `Product` を持つ `Customer` を返します。 |
| `FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` | `UnitPrice` に `UnitSales` を乗算して、販売注文値が 2 番目に大きい `Customer` を返します。 |

## 例 - 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)`、単価が 2 番目に小さい製品を計算します。

* `=FirstSortedValue (Customer, -UnitPrice, 2)` は、単価が 2 番目に大きい製品を持つ顧客を計算します。

* `=FirstSortedValue (Customer, UnitPrice, 3)`、は、単価が 3 番目に大きい製品を持つ顧客を計算します。

* `=FirstSortedValue (Customer, -UnitPrice*UnitSales, 2)` は、`UnitPrice` に `UnitSales` を乗算して、販売注文値が 2 番目に大きい顧客を計算します。

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 |

最初の列は、`UnitPrice` (`9`) が最も小さい製品であるため、値 `BB` を返します

2 番目の列は、`UnitPrice` (`10`) が 2 番目に小さい製品であるため、値 `BB` を返します

3 番目の列は、`Betacab`を返します。これは、`Product` が 2 番目に大きい `UnitPrice` (`20`) を持つ `Customer` です。

4 番目の列は `NULL` を返します。これは、同じランク (3 番目に小さい) の `UnitPrice` (`15`) を持つ `Customer` (`Astrida` と `Canutility`) の値が 2 つあるためです。

5 番目の列は、`UnitPrice` に `UnitSales` (`120`) を乗算して、2 番目に大きい販売注文値を持つ `Customer` である `Canutility` を返します。

## 例 - FirstSortedValue のシナリオ

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

#### チャートの数式

概要

データセットには、その年の最初の 3 か月間の売上高が含まれています。地域マネージャーは、将来の在庫計画を立てるために、最も売れ行きの良い製品と悪い製品を特定したいと考えています。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`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` が最も売れなかった製品でした。

## 詳細を見る

* [set 分析](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [集計範囲の定義](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)