# 集計関数

集計関数と呼ばれる関数のファミリは、複数の項目値を入力として取得し、グループごとに結果を 1 つ返す関数で構成されます。グループ化はチャート軸やスクリプト構文内の group by 条件によって定義されます。

集計関数には、Sum()、Count()、Min()、Max() などがあります。

ほとんどの集計関数は、データ ロード スクリプトとチャート式の両方で使用できますが、構文が異なります。

## データ ロード スクリプトでの集計関数の使用

集計関数は LOAD および SELECT ステートメントの内部でのみ使用できます。

## チャート式での集計関数の使用

内部集計に TOTAL 修飾子が含まれない限り、集計関数のパラメータに集計関数を含めることはできません。 ネストされた集計関数が必要な場合、指定された軸と組み合わせて高度な関数 Aggr を使用します。

集計関数は、選択内容によって定義されたレコード セットを集計します。ただし、代替のレコード セットは、Set 分析で Set 数式を用いることで定義できます。

[set 分析および set 数式](https://help.qlik.com/ja-JP/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)

## 集計の計算方法

集計は、特定のテーブルのレコードをループして、その中のレコードを集約します。たとえば、Count (&lt;Field&gt;) は、&lt;Field&gt; が存在するテーブル内のレコード数をカウントします。個別の項目の値のみを集計する場合は、Count(distinct&lt;Field&gt;) などのdistinct 節を使用する必要があります。

集計関数に異なるテーブルの項目が含まれている場合、集計関数は、構成項目のテーブルのクロス積のレコードをループ処理します。 これはパフォーマンスに悪影響をおよぼすため、特に大量のデータがある場合は、このような集計を避ける必要があります。

## キー項目の集計

集計の計算方法は、集計にどのテーブルを使用するかが明確でないため、キー項目を集計することができません。たとえば、項目 &lt;Key&gt; が 2 つのテーブルをリンクしている場合、Count (&lt;Key&gt;) が 1 つ目のテーブルのレコード数を返すべきか、2 つ目のテーブルのレコード数を返すべきかが明確ではありません。

ただし、distinct 節を使用することで、集約が明確に定義され、計算することができます。

したがって、distinct 節を使用せずに集約関数の中でキー項目を使用した場合、QlikView は無意味な数を返すことになります。この問題を解決するには、distinct 節を使用するか、キーのコピー (1 つのテーブルにのみ存在するコピー) を使用します。

たとえば、次のテーブルでは、ProductID がテーブル間のキーになります。

Products テーブルと Details テーブル間の ProductID キー

![現在の選択例](https://help.qlik.com/ja-JP/qlikview/May2024/Subsystems/Client/Content/Resources/Images/AggTables.png)

Count(ProductID) は、Products テーブル (製品ごとに 1 つのレコードのみ – ProductID が主キー) でカウントされるか、Detailsテーブル (製品ごとに複数のレコードがある可能性が高い) でカウントされます。製品数を個別にカウントする場合は、Count(distinct ProductID) を使用する必要があります。特定のテーブルの行数をカウントする場合は、キーを使用しないでください。