# 集計関数

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

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

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

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

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

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

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

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

[set 分析および set 数式](https://help.qlik.com/ja-JP/qlikview/September2025/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;) が最初のテーブルまたは 2 番目のテーブルのレコード数を返す必要があるかどうかは明確ではありません。

ただし、distinct 句を使用する場合、集計は明確に定義されており、2 つのテーブルにリンクされたキー 項目に対して計算できます。

distinct 句を指定せずに集計関数内でキー項目を使用すると、QlikView は意味のない数値を返します。解決策は、distinct 句を使用するか、キーのコピー (1 つのテーブルにのみ存在するコピー) を使用することです。

次のテーブルに対する例では、テーブル間のキーは ProductID です。

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

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

ProductsProducts と DetailsDetails テーブル間の ProductIdProductId キー !['ProductID' キー項目でリンクされた 2 つのテーブル](https://help.qlik.com/ja-JP/qlikview/September2025/Subsystems/Client/Content/Resources/Images/AggTables.png)

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

### 3 以上のテーブルに含まれたキー項目の集計

distinct プレフィックスは、最大 2 つのテーブルをリンクするキー項目でのみ正常に機能します。3 つ以上のテーブルに存在するキー項目をグループ化する場合、項目の頻度情報を必要とする操作はすべて NULL を返します。キー項目が 3 つ以上のテーブルにリンクしている場合、項目の非キー コピーを代わりに使用する必要があります。