Sum、Count、および Average は
Aggregate 式 (集計式) です。
{
Sum |
Count |
Average}
( <
aggregateExpression>, <
aggregateCondition>, <
defaultValue>
) [
if <triggeringCondition> ]
入力値の説明:
<
aggregateExpression>
集計する、つまり合計または平均を求めるエクスプレッションです。項目属性 (計算式の項目属性でもかまいません)、定数、変数を含めることができます (変数は
インライン式だけで使用できます)。
Sum および Average では、結果データタイプ <aggregateExpression> は数値である必要があります。Count では、最初のパラメーターはエクスプレッションではなく、レコードのカウント対象となるテーブルに属する項目属性である必要があります (*)。
<
aggregateCondition>
検索条件と
データセレクターの呼び出しを組み合わせたものです。検索条件およびデータセレクターはオプションです:
[ <
SearchCondition> ] [
USING <
DataSelector> '(' <
パラメーター>
1, <
パラメーター>
2, <
パラメーター>
n ')' ]
<
SearchCondition>
レコードを総計に含める場合、このレコードが満たす必要のある条件です。項目属性、定数、変数を含めることができます (ユーザー変数は
インライン式のみ、GeneXus の標準変数は
グローバル式とインライン式のみで使用できます)。
<defaultValue>
<
aggregateCondition> に一致するレコードがない場合に返される値です。これは定数であり、オプションです。
<
triggeringCondition>
式をトリガーする必要があるかどうかを判別する条件です。これはオプションです。使用できるのは、コンテキストテーブルに属する項目属性 (格納された場合に式項目属性が属するもの) とその拡張項目属性だけです。
注: 戻り値は、Aggregate 式に割り当てられている項目属性または変数の定義にしたがって四捨五入されます。
たとえば、値 1、3、および 1 に、AttributeA の 3 つのレコードを持つ AttributeB=Average(AttributeA) を割り当てる場合、
- AttributeB が N(10.5) と定義されている場合、値は 1,66667 になります。
- AttributeB が N(7.2) と定義されている場合、値は 1,67 になります。
(*) 該当する項目属性が null の場合でも、すべてのレコードがカウントされます。
次のようなトランザクションについて考えます:
Flight
{
FlightId*
FlightDescription
FlightPrice
FlightInstanceAveragePrice = Average(FlightInstancePrice, FlightInstanceDate = Today(), 0);
FlightInstanceTotalPrice = Sum(FlightInstancePrice);
FlightInstanceCountDate = Count(FlightInstanceNumber) if FlightPrice > 100;
}
FlightInstance
{
FlightInstanceNumber*
FlightId
FlightDescription
FlightPrice
FlightInstanceDate
FlightInstanceNumberOfPassengers
FlightInstancePrice = FlightPrice if FlightInstanceNumberOfPassengers <= 100;
FlightPrice * 0.9 if FlightInstanceNumberOfPassengers > 100 and FlightInstanceNumberOfPassengers < 200;
FlightPrice * 0.8 otherwise;
FlightInstanceNumberOfPassengers = Count(PassengerName,PassengerName = "Smith",0);
{
PassengerId*
PassengerName
}
}
上の例は、
グローバルな Aggregate 式とその定義を示しています (定義された式は、FlightInstancePrice 式を除き、すべて Aggregate 式です)。