集計関数

EQLでは、次に示す集計関数がサポートされます。

関数 説明
ARB 特定のフィールドの値のセットから値を1つ選択します。選択される値は不定ですが一定です。複数割当ての属性(セット)および単一割当ての属性の両方で動作します。
AVG 特定のフィールドの算術的平均値を計算します。
CORRELATION 2つの数値フィールド間の相関係数を計算します。
COUNT 特定のフィールドの値が有効でNULLではないレコードの数を、GROUP BYの結果ごとに数えます。複数割当ての属性(セット)および単一割当ての属性の両方で動作します。
COUNT_APPROX 最も頻度の高い絞込みを数えます。複数割当ての属性(セット)および単一割当ての属性の両方で動作します。
COUNTDISTINCT 特定のフィールドの、重複を除いた、有効でNULLではない値の数を、GROUP BYの結果ごとに数えます。複数割当ての属性(セット)および単一割当ての属性の両方で動作します。
APPROXCOUNTDISTINCT 特定のフィールドの、重複を除いた、有効でNULLではない値の数を、GROUP BYの結果ごとに数えます。複数割当ての属性(セット)および単一割当ての属性の両方で動作します。
HAS_REFINEMENTS 特定の属性に非暗黙的な絞込みがあるかどうかを判別します。
MAX 特定のフィールドの最大値を見つけます。
MIN 特定のフィールドの最小値を見つけます。
MEDIAN 特定のフィールドの中央値を見つけます。(PAGE PERCENTはオーバーラップ機能を提供することに注意してください)。引数が整数の場合、常にdoubleが返されます。
EQLで中央値を計算する数値の個数が偶数の場合は、EQLでのMEDIANの定義は通常の統計学的定義と同じであることに注意してください。つまり、入力のリレーションの内容が{1,2,3,4}で、次の問合せを実行するとします。
RETURN results AS SELECT
  MEDIAN(a) AS med
FROM SaleState
GROUP
ソートされた数値セットの真ん中の2つ要素の平均値である2.5が結果になります。
PERCENTILE フィールドの百分位数を計算します。
RECORD_IN_FAST_SAMPLE 指定した状態のレコードのサンプルを返します。
STDDEV 特定のフィールドの標準偏差を計算します。
STRING_JOIN 1つの文字列属性のすべての値が格納された、1つの文字列を作成します。
SUM フィールド値の合計を計算します。
VARIANCE 特定のフィールドの分散(つまり、標準偏差の平方)を計算します。

MINおよびMAXの結果の順序

MINおよびMAX関数は、int、double、dateTime、期間、ブールおよび文字列のフィールドを次のように扱います。
  • intおよびdouble値の場合、MINは最も数値の小さい整数またはdoubleを検出し、MAXは最も大きい整数またはdoubleを検出します。
  • dateTime値の場合、MINは最も古い日付を検出し、MAXは最も新しい日付を検出します。
  • 期間の値の場合、MINは最も短い期間を検出し、MAXは最も長い期間を検出します。負の期間は正の期間より小さいと見なされることに注意してください。
  • ブール値の場合、MINMAXの両方ともFALSEはTRUEより小さいと見なします(データ・セットに両方の値が割り当てられている場合)。データ・セットにブール型のみが割り当てられている場合、その値が両方の関数で返されます。
  • 文字列値の場合、両関数とも辞書式順序(たとえば、"89" < "9" < "90" < "ab" < "xy")を使用します。この例では、MINは"89"を返し、MAXは"xy"を返します。

STRING_JOIN関数

STRING_JOIN関数は文字列プロパティとデリミタを受け取り、単一の文字列を作成します。この内容は、プロパティのすべての値をデリミタで区切って連結したものです。構文は次のとおりです。
STRING_JOIN('delimiter', string_attribute)

デリミタは、文字列リテラルを単一引用符で囲んだものです。

結果の文字列は、各グループ内で辞書順序でソートされます。NULL値は出力では無視されますが、値が空の文字列の場合は無視されません。

この問合せの例では、R_NAME属性は文字列型で地域の名前が格納されており、N_NAME属性も文字列型で国の名前が格納されています。
RETURN results AS SELECT
  STRING_JOIN(', ',R_NAME) AS Regions,
  STRING_JOIN(',',N_NAME) AS Nations
FROM ProductState
GROUP
この問合せでは、地域と国の名前がカンマで区切って返されます。
Nations
ALGERIA, ARGENTINA, BRAZIL, CANADA, CHINA, EGYPT, ETHIOPIA, FRANCE, GERMANY, INDIA, INDONESIA, IRAN,
IRAQ, JAPAN, JORDAN, KENYA, MOROCCO, MOZAMBIQUE, PERU, ROMANIA, RUSSIA, SAUDI ARABIA, UNITED KINGDOM,
UNITED STATES, VIETNAM
Regions
AFRICA,AMERICA,ASIA,EUROPE,MIDDLE EAST
注意: Regionsのデリミタにはスペースが含まれていますが、Nationsのデリミタには含まれていません。つまり、出力語の間にスペースが必要な場合は、デリミタでスペースを指定する必要があります。