サポート > リポジトリ > 関数 > 集合処理
ja | en

集合演算処理に関する 36 個の関数を紹介します。繰り返し項目、繰り返しコンテナ、外部キー子モデル、配列に適用できます。

COUNT |  SUM |  AVERAGE |  MAX |  MIN |  FIRST |  LAST |  SLICE |  JOIN |  DJOIN |  DDJOIN |  RANK |  LARGE |  SMALL |  GCD |  LCM |  ARRAY |  SORT |  REVERSE |  CONTAINS |  ISEMPTY |  ADD |  GET |  INDEXOF |  LASTINDEXOF |  ISEQUALS |  ISSAMELENGTH |  REMOVE |  REMOVEELEMENT |  REMOVEELEMENTALL |  UBOUNDR7.8 |  AGCOUNTR7.8 |  AGSUMR7.8 |  AGAVGR7.8 |  AGMAXR7.8 |  AGMINR7.8 |  モデル参照項目の扱い |  外部キー子モデルの指定方法 |  制約

ここに紹介する関数は、演算対象が繰り返し項目・繰り返しコンテナ内の項目・外部キー子モデル内の項目、となります。演算結果(数をかぞえる、積算する、最大値を取得する...)はコンテナや外部キー子モデルの項目に格納してください。

COUNT(繰り返し項目, [条件])

COUNT(繰り返しコンテナ名, [条件])

COUNT(外部キー子モデル名, [条件])

レコードの総数を求めます。計算結果を格納する項目の型は「整数」としてください。 条件に合致するデータが存在しなかった場合、"0" 件と表示されます。 [制約...]

例:繰り返し項目 number の件数を求める。

COUNT(${number})

例:繰り返しコンテナ report の件数を求める。

COUNT(${report})

コンテナ名だけを指定します。コンテナ内のいずれの項目名も含める必要はありません。

例:外部キー子モデル support の件数を求める。(外部キーの指定方法の詳細...)

COUNT(${support_lp})

条件の指定

二重引用符(ダブルクォーテション)の中に、条件式を記述します。項目名は${...} で囲みます。

例:繰り返し項目 number について、正の数となっている件数を求める。

COUNT(${number}, "${number}>0")

例:繰り返しコンテナ report の件数を求める。ただし同コンテナ内の項目である report/date が今年のもののみとする。

COUNT(${report}, "YEAR(${report/date})==YEAR(TODAY())")

例:外部キー子モデル support の項目 kingaku の件数を求める。ただし子モデルの項目 name に値がセットされているもののみとする。(外部キーの指定方法の詳細...)

COUNT(${support_lp}, "${support_lp.name}!=null")

例:条件部にモデル参照項目を指定する。ID 部で判断する場合。

COUNT(${report}, "${report/type#id}==1")
COUNT(${support_lp}, "${support_lp.type#id}==1")

例:条件部にモデル参照項目を指定する。内容部で判断する場合は文字列一致比較のため EXACT 関数と併用します。

参照連動項目には対応していません。

COUNT(${report}, "EXACT(${report/type#content}, "男")")
COUNT(${support_lp}, "EXACT(${support_lp.type#content}, "男")")
COUNT 関数は "自分のモデルの検索結果" を扱うものではありません。この場合は RESULTSIZE 関数を利用します。

SUM(繰り返し項目, [条件])

SUM(繰り返しコンテナ項目, [条件])

SUM(外部キー子モデル項目, [条件])

指定した集合値の加算を行います。 計算結果を格納する項目の型、ならびに計算対象項目の型は「整数」(あるいはその他、数値を表現する型)としてください。 [制約...]

例:繰り返し項目 number の合計を求める。

SUM(${number})

例:繰り返しコンテナ report/number の合計を求める。

SUM(${report/number})

例:外部キー関連モデル support の項目 kingaku の合計を求める。(外部キーの指定方法の詳細...)

SUM(${support_lp.kingaku})

条件の指定

二重引用符(ダブルクォーテション)の中に、条件式を記述します。項目名は${...} で囲みます。

例:繰り返し項目 number について、正の数の合計を求める。

SUM(${number}, "${number}>0")

例:繰り返しコンテナ report/number の合計を求める。ただし同コンテナ内の項目である report/date が今年のもののみとする。

SUM(${report/number}, "YEAR(${report/date})==YEAR(TODAY())")

例:外部キー子モデル support の項目 kingaku の合計を求める。ただし子モデルの項目 name に値がセットされているもののみとする。(外部キーの指定方法の詳細...)

SUM(${support_lp.kingaku}, "${support_lp.name}!=null")

例:条件部にモデル参照項目を指定する。ID 部で判断する場合。

SUM(${report/number}, "${report/type#id}==1")
SUM(${support_lp.kingaku}, "${support_lp.type#id}==1")
条件部の項目は、それぞれ繰り返しコンテナ内の

例:条件部にモデル参照項目を指定する。内容部で判断する場合は文字列一致比較のため EXACT 関数と併用します。

参照連動項目には対応していません。

SUM(${report/number}, "EXACT(${report/type#content}, "男")")
SUM(${support_lp.kingaku}, "EXACT(${support_lp.type#content}, "男")")

AVERAGE(繰り返し項目, [条件])

AVERAGE(繰り返しコンテナ項目, [条件])

AVERAGE(外部キー子モデル項目, [条件])

平均値を算出します。

整数型の項目に対する平均値を求める場合、計算結果を格納する項目の型は「8バイト浮動小数点」とすることを推奨します。(「4バイト浮動小数点」よりも演算精度が高くなります。) その他の記述例、制約については SUMと同様です。

MAX(繰り返し項目)

MAX(繰り返しコンテナ項目)

MAX(外部キー子モデル項目)

MAX(数値1, 数値2), MAX(数値が格納された配列)

MAX(日付1, 日付2), MAX(日付が格納された配列)

MAX(文字列1, 文字列2), MAX(文字列が格納された配列)

複数個の引数のうち、最大値を返します。 引数が二つ以上の場合は、ARRAY関数と組み合わせて利用できます。

引数に繰り返し項目、繰り返しコンテナ項目、外部キー子モデルを指定できます。 また項目の型に日付型、文字列型を指定できます。

例:multiple_item は繰り返し項目

MAX(${multiple_item})

例:繰り返しコンテナ項目 report/number を対象

MAX(${report/number})

例:外部キー子モデルとして紐づいている support モデルの kingaku 項目を対象

MAX(${support_lp.kingaku})

例:二つの項目 item1, item2 は同じ型

MAX(${item1}, ${item2})

例:複数の項目 item1, item2, item3 は同じ型

MAX(ARRAY_INT(${item1}, ${item2}, ${item3})

MIN(繰り返し項目)

MIN(繰り返しコンテナ項目)

MIN(外部キー子モデル項目)

MIN(数値1, 数値2), MIN(数値が格納された配列)

MIN(日付1, 日付2), MIN(日付が格納された配列)

MIN(文字列1, 文字列2), MIN(文字列が格納された配列)

複数個の引数のうち、最小値を返します。 引数が二つ以上の場合は、ARRAY関数と組み合わせて利用できます。

引数に繰り返し項目、繰り返しコンテナ項目、外部キー子モデルを指定できます。 また項目の型に日付型、文字列型を指定できます。

例:multiple_item は繰り返し項目

MIN(${multiple_item})

例:繰り返しコンテナ項目 report/number を対象

MIN(${report/number})

例:外部キー子モデルとして紐づいている support モデルの kingaku 項目を対象

MIN(${support_lp.kingaku})

例:二つの項目 item1, item2 は同じ型

MIN(${item1}, ${item2})

例:複数の項目 item1, item2, item3 は同じ型

MIN(ARRAY_INT(${item1}, ${item2}, ${item3})

FIRST(繰り返し項目, [条件])

FIRST(繰り返しコンテナ項目, [条件])

FIRST(外部キー子モデル項目, [条件])

先頭のレコードの値を取得します。

文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型と、計算対象となる項目の型を同じとしてください。(ただしモデル参照については参照先の型を指定してください。)

この設定を行うときは繰り返しコンテナ内のすべての項目について、ソートボタンを非表示にすることを推奨します。(ソートされてしまうと、最後のレコードが変わってしまうため。)

その他の記述例、制約については SUMと同様です。

LAST(繰り返し項目, [条件])

LAST(繰り返しコンテナ項目, [条件])

LAST(外部キー子モデル項目, [条件])

最後のレコードの値を取得します。

文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型と、計算対象となる項目の型を同じとしてください。(ただしモデル参照については参照先の型を指定してください。)

この設定を行うときは繰り返しコンテナ内のすべての項目について、ソートボタンを非表示にすることを推奨します。(ソートされてしまうと、最後のレコードが変わってしまうため。)

その他の記述例、制約については SUMと同様です。

SLICE(繰り返し項目, 開始レコード番号または項目名, [代替値])

SLICE(繰り返しコンテナ項目, 開始レコード番号または項目名, [代替値])

SLICE(外部キー子モデル項目, 開始レコード番号または項目名, [代替値])

N番目のレコードの値を取得します。

文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型と、計算対象となる項目の型を同じとしてください。(ただしモデル参照については参照先の型を指定してください。)

開始レコード番号は項目名の横に(コンマ区切りの第二引数として)指定します。レコード番号は「0」から数えます。また、指定したレコードが存在しなかった場合は、空白が表示されます。

開始レコード番号は固定値を指定します。また、開始レコード番号を示す特別な表記 "first" と "last" を使うことができます。"first" は先頭のレコードを、"last" は末尾のレコードを意味します。

指定したレコードが存在しない場合に、セットする値を指定することができます。コンマ区切りの第三引数に代替値を指定してください。

例:繰り返し項目 number の最初の項目の値を取得する。

SLICE(${number},0)

例:繰り返しコンテナ report/number の先頭から 1 番目の項目の値を取得する。ただしレコードが存在しなかった場合は "なし" を取得する。(取得する項目の型は文字列型であること)

SLICE(${report/number}, first+1, "なし")

例:外部キー連携モデル support の項目 kingaku の末尾から 2 つ前の値を取得する。ただしレコードが存在しなかった場合は 0 を取得する。(外部キーの指定方法の詳細...)

SLICE(${support_lp.kingaku}, last-2, 0)

開始レコード番号に代わって項目名を指定する

第二引数の開始レコード番号に、項目名を指定できます。項目名は ${...} で囲みます。

SLICE(${report/number}, ${item}+1)

項目名に簡単な四則演算を加えることはできますが、他の関数を含めることはできません。

JOIN(繰り返し項目, [連結文字])

JOIN(繰り返しコンテナ項目, [連結文字])

JOIN(外部キー子モデル項目, [連結文字])

JOIN(チェックボックス型の項目, [連結文字])

すべての項目値を連結した文字列を作成します。文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型は「文字列型」としてください。

第二引数に連結時の文字を指定することができます。省略時は「,」(コンマ)が用いられます。

チェックボックス型の項目に対して適用した場合は、"チェックされたデータ" を連結対象とします。

例:繰り返し項目 number の値を連結した文字列を取得する。区切り文字はデフォルト値「,」(コンマ)を用いる。

JOIN(${number})

例:繰り返しコンテナ report/staff の値を連結した文字列を取得する。区切り文字は「;」(セミコロン)を用いる。

JOIN(${report/staff},';')

例:外部キー連携モデル support の項目 companyname の値を連結した文字列を取得する。区切り文字はデフォルト値「,」(コンマ)を用いる。(外部キーの指定方法の詳細...)

JOIN(${support_lp.staff})

DJOIN(繰り返し項目, [連結文字])

DJOIN(繰り返しコンテナ項目, [連結文字])

DJOIN(外部キー子モデル項目, [連結文字])

DJOIN(チェックボックス型の項目, [連結文字])

連結対象項目の重複を許さない join です。

例えば、連結対象の文字列項目が "aaa", "bbb", "aaa", "ccc" のとき、区切り文字「,」で連結すると "aaa,bbb,ccc" という文字列が生成されます。

DDJOIN(繰り返し項目, [連結文字])

DDJOIN(繰り返しコンテナ項目, [連結文字])

DDJOIN(外部キー子モデル項目, [連結文字])

DDJOIN(チェックボックス型の項目, [連結文字])

連結対象項目の重複を許さない join です。さらに、連結対象項目内に区切り文字があれば、それを分割して重複チェックを行います。

例えば、連結対象の文字列項目が "a,b,c", "a,b,d" のとき、区切り文字「,」で連結すると "a,b,c,d" という文字列が生成されます。

RANK(繰り返し項目, 繰り返し項目(範囲), [順序])

RANK(繰り返しコンテナ項目, 繰り返しコンテナ項目(範囲), [順序])

RANK(外部キー子モデル項目, 外部キー子モデル項目(範囲), [順序])

引数の集合の順位を返します。第一引数が対象項目、第二引数が範囲を示す項目ですが、通常は第一引数と第二引数の項目名は同じものになります。第三引数の順序は省略できます。省略時は大きい方からの順(降順)となります。"1" を指定すると昇順になります。

図1 RANK 関数の指定例

例:繰り返しコンテナ項目 staff/tensuu を対象とする。昇順とする。

RANK(${staff/tensuu}, ${staff/tensuu}, 1)

例:外部キー子モデルとして紐づいている staff モデルの tensuu 項目を対象とする。降順とする。

RANK(${staff_lp.tensuu}, ${staff_lp.tensuu})

LARGE(繰り返し項目, 順位)

LARGE(繰り返しコンテナ項目, 順位)

LARGE(外部キー子モデル項目, 順位)

大きい方からの順位を返します。第二引数の順位は数値(一位,二位..)を指定します。RANK関数の利用例における「トップ」の項目が相当します。

例:繰り返しコンテナ項目 staff/tensuu を対象

LARGE(${staff/tensuu}, 1)

例:外部キー子モデルとして紐づいている staff モデルの tensuu 項目を対象

LARGE(${staff_lp.tensuu}, 1)

SMALL(繰り返し項目, 順位)

SMALL(繰り返しコンテナ項目, 順位)

SMALL(外部キー子モデル項目, 順位)

小さい方からの順位を返します。第二引数の順位は数値(一位,二位..)を指定します。RANK関数の利用例における「最下位」の項目が相当します。

例:繰り返しコンテナ項目 staff/tensuu を対象

SMALL(${staff/tensuu}, 1)

例:外部キー子モデルとして紐づいている staff モデルの tensuu 項目を対象

SMALL(${staff_lp.tensuu}, 1)

GCD(繰り返し項目)

GCD(繰り返しコンテナ項目)

GCD(外部キー子モデル項目)

GCD(整数型の配列)

引数の整数型配列から、最大公約数を返します。戻り値は整数型です。

例:以下の式は "6" を返します。

GCD(ARRAY_INT(12,18))

例:繰り返しコンテナ項目 cont/value を対象。型は整数型のみ。

GCD(${cont/value})

LCM(繰り返し項目)

LCM(繰り返しコンテナ項目)

LCM(外部キー子モデル項目)

LCM(整数型の配列)

引数の整数型配列から、最小公倍数を返します。戻り値は整数型です。

例:以下の式は "6" を返します。

LCM(ARRAY_INT(2,3))

例:繰り返しコンテナ項目 cont/value を対象。型は整数型のみ。

LCM(${cont/value})

ARRAY_INT(整数型の数値...)

ARRAY_LONG(8バイト整数型の数値...)

ARRAY_FLOAT(4バイト浮動小数点型の数値...)

ARRAY_DOUBLE(8バイト浮動小数点型の数値...)

ARRAY(文字列...)

引数の整数型数値(コンマ区切りで複数個、記述できます)から、整数型の配列を生成します。 MAX, MIN 関数と組み合わせることで、最大値や最小値を返すことができます。

引数がない場合は、空の配列を生成します。ARRAY_INT(), ARRAY_LONG(), ARRAY_FLOAT(), ARRAY_DOUBLE(), ARRAY() が利用できます。R7.10.3

例:

MAX(ARRAY_INT(10, 20, 30))

文字列項目を、文字列の配列へと変換することもできます。

例:

ARRAY(USERNAME())
ARRAY(${item1},${item2},${item3})

SORT(数値型配列)

SORT(文字列型配列)

引数の配列を昇順で並び替えます。戻り値の型は、引数と同じ型です。

REVERSE(数値型配列)

REVERSE(文字列型配列)

引数の配列を降順で並び替えます。戻り値の型は、引数と同じ型です。

CONTAINS(数値型配列, 数値)

CONTAINS(文字列型配列, 文字列)

第一引数の配列に、第二引数の値が含まれているかどうかを返します。戻り値は boolean 型(真/偽) です。

ISEMPTY(配列)

第一引数の配列が空かどうかを返します。戻り値は boolean 型(真/偽) です。

ADD(配列, 値)

第一引数の配列の末尾に、値を加えた新しい配列を生成します。戻り値は配列です。数値型、文字列型、日付型で利用できます。

ADD(${array},1)

項目arrayが繰り返し項目で値 "1,0" を持っている場合、"1,0,1" という配列を新たに生成します。

GET(配列, 添字)

第一引数の配列の「何番目」の値を返します。配列の添字は0から数えます。第二引数の添字が不適切の場合(例:添字が負数、添字が配列の大きさを超えている)、添字は 0 として扱われます。すなわち、配列の0番目の値を返します。

INDEXOF(配列, 見つける値)

第一引数の配列中に、第二引数で指定した値が含まれている場合、先頭から何番目に含まれているかを返します。配列の添字は0から数えます。見つからなかった場合は -1 を返します。

LASTINDEXOF(配列, 見つける値)

第一引数の配列中に、第二引数で指定した値が含まれている場合、末尾から何番目に含まれているかを返します。配列の添字は0から数えます。見つからなかった場合は -1 を返します。

ISEQUALS(配列, 配列)

第一引数の配列と、第二引数の配列の値が同じかどうかを調べます。戻り値は boolean 型(真/偽) です。数値型、文字列型、日付型で利用できます。

ISSAMELENGTH(配列, 配列)

第一引数の配列と、第二引数の配列の要素数が同じかどうかを調べます。戻り値は boolean 型(真/偽) です。数値型、文字列型、日付型で利用できます。(配列がnullの場合、要素数は0個として比較します。)

REMOVE(配列, 添字)

第一引数の配列から、何番目の要素(添字として表現された数値)を削除した配列を返します。配列の添字は0から数えます。数値型、文字列型、日付型で利用できます。

REMOVEELEMENT(配列, 削除する値)

第一引数の配列から、最初にみつかった「削除する値」を除いた配列を返します。指定された値が含まれていなかった場合は、第一引数の配列と同じ配列が戻り値になります。削除される要素は1つだけです。

例えば配列の要素が "1,2,3,2,1" で、削除する値が "2" のとき、戻り値の配列は "1,3,2,1" になります。

REMOVEELEMENTALL(配列, 削除する値)

第一引数の配列から、みつかった「削除する値」をすべて除いた配列を返します。指定された値が含まれていなかった場合は、第一引数の配列と同じ配列が戻り値になります。

例えば配列の要素が "1,2,3,2,1" で、削除する値が "2" のとき、戻り値の配列は "1,3,1" になります。

UBOUND(配列)

配列の大きさ(サイズ)を返します。戻り値は整数型です。

AGCOUNT("項目名")

「出力制御 > 一覧画面 > 集計値 > 個数」の項目名を指定します。一覧表示画面の集計機能で求めた「個数」の値を取得できます。戻り値の型は8バイト整数(long)です。

例:

AGCOUNT("kosuu")

項目名が存在しない場合、または一覧表示画面の集計機能が設定されていない場合は -1 が返ります。

AGSUM("項目名")

「出力制御 > 一覧画面 > 集計値 > 合計値」の項目名を指定します。一覧表示画面の集計機能で求めた「合計値」の値を取得できます。戻り値の型は8バイト整数(long)です。

例:

AGCOUNT("goukei")

項目名が存在しない場合、または一覧表示画面の集計機能が設定されていない場合は -1 が返ります。

AGAVG("項目名")

「出力制御 > 一覧画面 > 集計値 > 平均値」の項目名を指定します。一覧表示画面の集計機能で求めた「平均値」の値を取得できます。戻り値の型は8バイト浮動小数点(double)です。

例:

AGAVG("heikin")

項目名が存在しない場合、または一覧表示画面の集計機能が設定されていない場合は -1 が返ります。

AGMAX("項目名")

「出力制御 > 一覧画面 > 集計値 > 最大値」の項目名を指定します。一覧表示画面の集計機能で求めた「最大値」の値を取得できます。

例:

AGMAX("saidai")

戻り値の型は java.lang.Object であるため、利用する場合は明示的な型変換が必要です。例えば日付型の場合、次のようになります。

(java.util.Date)AGMAX("salesday")

数値型(整数)の場合、次のようになります。

(Integer)AGMAX("salestotal")

項目名が存在しない場合、または一覧表示画面の集計機能が設定されていない場合は null が返ります。

AGMIN("項目名")

「出力制御 > 一覧画面 > 集計値 > 最小値」の項目名を指定します。一覧表示画面の集計機能で求めた「最小値」の値を取得できます。

例:

AGMIN("saisyou")

戻り値の型は java.lang.Object であるため、利用する場合は明示的な型変換が必要です。例えば日付型の場合、次のようになります。

(java.util.Date)AGMIN("salesday")

数値型(整数)の場合、次のようになります。

(Integer)AGMIN("salestotal")

項目名が存在しない場合、または一覧表示画面の集計機能が設定されていない場合は null が返ります。

コンテナ内に含まれているモデル参照の ID 部と内容部を指定することができます。 単に項目名のみを指定した場合は、その「内容」が対象となります。

COUNT,SUMなどの条件部に指定する項目

子モデルの値で判定する

外部キー子モデルのCOUNT,SUMなどを扱う場合、条件部に指定する項目に接頭語 "子モデル名_lp." を指定することで「子モデル」に含まれるものとなります。

例えば

SUM(${support_lp.kingaku}, "${support_lp.type#id}==1")

の場合、条件部に記述した type 項目は、子モデル側 (support) に含まれるものを使います。このときの条件判定は、子モデルの1データ毎に行われます。

親モデルの値で判定する

接頭語を付与しない場合、「親モデル」に含まれる項目を使います。

例えば

COUNT(${child_lp}, "${child_lp.status#id}==${status#id}")

の場合、親モデルの status 項目の値と一致する子モデルのみが対象となります。

この例でわかるように、接頭語 "子モデル名_lp." を省略し、かつ、条件部の項目が親モデルと子モデルの両方に含まれる場合は、親モデルの項目が使われます。
子モデル名を明示しない場合で、指定項目(上の例では status 項目)が親モデルに存在せず、子モデルに存在した場合は、自動的に接頭語 "子モデル名_lp." があると解釈されます。つまり子モデルの項目 status で判定されます。
  • 計算対象となる繰り返し項目、コンテナ、外部キー項目が存在しないか、または sum, count 演算子に指定した条件を満たすものが一つもなかった場合、計算結果は格納されません。(表示部分は空白となります。) このような場合でも強制的に「0」をセットする場合は、計算式を記述した項目を「必須」としてください。
  • 検索条件の初期値設定に、集合関数を用いることはできません。
  • 「入力方式 > ユーザ定義チェック」に集合関数を用いることはできません。
  • 「メール送受信 > 時間指定によるメール送信」「時間指定によるメール受信(データ取り込み)」の「ジョブ定義」-「起動条件」に集合関数を用いることはできません。
  • 「帳票 > ファイル名」に集合関数を用いることはできません。
  • 集合関数で指定する「項目部」および「条件部」に(COUNT,SUM 等の)集合関数を含めることはできません。例えば次の式はエラーになります。
    JOIN(JOIN(${item1}, ","), ",")
    JOIN関数の項目部にJOIN関数が指定されています。 このような場合は、それぞれ別の項目単位で計算するようにしてください。