FlexReport for WinForms
集計関数

集計関数は、レンダリングされるグループのデータをまとめるために使用されます。レポートヘッダーフィールドで使用すされた集計関数は、データセット全体の集計値を返します。グループのヘッダーまたはフッターで使用された集計関数は、そのグループの集計値を返します。

FlexReport の集計関数はすべて、次の 2 つの引数を受け取ります。

FlexReport では、次の集計関数が定義されています。

関数 説明
Avg 現在のグループ内の式の平均値。たとえば、次の式は、グループ全体の平均売上高と特定の製品の平均売上高を計算します。Avg(SalesAmount)
Avg(SalesAmount, ProductType = 3)
Sum グループ内のすべての値の合計。
Count グループ内で null 以外の値を持つレコードの数。式にアスタリスク(*)を使用すると、すべてのレコードを数えることができます。たとえば、次の式は、住所の値が有効な(null ではない)従業員の数と従業員の総数をカウントします。Count(Employees.Address)
Count(*)
CountDistinct グループ内で null 以外の値を持つレコードの数(重複する値は数えない)。
Min、Max 式の最小値および最大値。例:"Max Sale = " & Max(SaleAmount)
Range 式の最小値と最大値の範囲。
StDev、Var 現在のグループ内の式の標準偏差および分散。SQL や Microsoft Excel と同様に、標本(n-1)の式を使用して値が計算されます。
StDevP、VarP 現在のグループ内の式の標準偏差および分散。SQL や Microsoft Excel と同様に、母集団(n)の式を使用して値が計算されます。
Median グループ内の値のメジアン(中央値)を返します。
Mode グループ内の値のモード(最頻値)を返します。

集計関数を使用するには、ヘッダーセクションまたはフッターセクションに計算フィールドを追加し、フィールドの Text プロパティに式を割り当てます。

たとえば、NWind.xml サンプルファイルの "Employee Sales by Country" レポートには、複数の集計フィールドが含まれます。このレポートは、レコードを国別および従業員別にグループ化します。

Employee グループのフッターセクションにある SalespersonTotal フィールドには、次の式が含まれています。

=Sum([SaleAmount])

このフィールドは Employee グループのフッターにあるため、この式は、従業員別の総売上高を返します。

CountryTotal フィールドと GrandTotal フィールドにも、まったく同じ式が含まれます。しかし、これらのフィールドはそれぞれ、Country グループのフッターおよびレポートフッターにあるため、式は国別の総売上高およびレコードセット全体の売上高を返します。

グループ内から上位レベルの集計値を参照する場合があります。たとえば、"Employee Sales by Country" レポートには、国別の売上高を総売上高に対する割合(%)で表示するフィールドがあります。Country グループ内で計算されるすべての集計値は、現在の国を参照するため、この割合を直接計算することはできません。その代わり、PercentOfGrandTotal フィールドでは次の式を使用します。

=[CountryTotal]/[GrandTotal]

CountryTotalGrandTotal はそれぞれ、Country フッターセクションとレポートフッターセクションにあるフィールドです。したがって、CountryTotal は国別の合計値を、GrandTotal はレコードセット全体の合計値を保持します。

コントロールがレコードセット全体のデータを調べる必要があるため、集計関数の評価には時間がかかることをよく理解する必要があります。そのため、集計関数は、できる限り少数の計算フィールドでのみ使用してください。これで他のフィールドでは、集計式を再度評価するのではなく、集計関数を使用するフィールドから集計値を直接読み取ることができます。

たとえば、NorthWind データベースの "Employee Sales by Country" レポートには、各売上高を国別の総売上高に対する割合(%)で表示する詳細フィールド PercentOfCountryTotal があります。このフィールドには、次の式が含まれています。

=[SaleAmount]/[CountryTotal]

SaleAmount は、レコードセットフィールドへの参照で、各詳細レコードごとに値が変化します。CountryTotal は、集計関数を含むレポートフィールドへの参照です。コントロールは、この式を評価する際に、レポートフィールドから直接集計値を取得します。集計の再計算は行いません。

レポートの完全なサンプルについては、ComponentOne Samples フォルダにある Nwind.xml レポート定義ファイルの「Employee Sales by Country」レポートを参照してください。