ソートマージ


1.6 集約機能とは

集約機能とは,同一ファイル内で同一キーを持つ複数のレコードを一つのレコードに併合し,指定した項目の値を合計する機能です。集約は,データ中の文字または数字をキーとします。

例えば支店コード,担当者名,および売上数量を登録した社員データファイルを支店コードと担当者名をキーとし,売上数量を合計して集約する場合,集約項目は,売上数量です。ただし,ファイルはあらかじめ昇順または降順でソートしておく必要があります。ソートしていない場合,集約の結果は保証しません。

また,無条件レコード抽出機能では,同一キーが複数レコードある場合,同一キー内の先頭のレコードを基に集約レコードを作成して出力します。同一キーが存在しない(1レコードだけ)場合,該当するレコードをそのまま出力します。

支店コードと担当者名をキーとして,売上金額を集約した例を次の図に示します。

図1‒8 集約機能の使用例

[図データ]

<説明>
  1. 同一キー(支店コード:03,担当者名:田中)の集約結果(売上金額:170000)を,先頭レコード(1レコード目)を基に作成して出力する。

  2. 同一キー(支店コード:03,担当者名:鈴木)の集約結果(売上金額:202000)を,先頭レコード(3レコード目)を基に作成して出力する。

  3. 同一キーがないレコード(支店コード:04,担当者名:渡辺)をそのまま出力する。

  4. 同一キーがないレコード(支店コード:05,担当者名:日立)をそのまま出力する。

  5. 同一キー(支店コード:06,担当者名:山田)の集約結果(売上金額:174000)を,先頭レコード(8レコード目)を基に作成して出力する。

集約結果がオーバーフローする場合は,それまでに集約した結果を出力したあとに,処理中のレコードから新しく集約します。

支店コードをキーとして売上数量を集約中に集約結果がオーバーフローした場合の例を,次の図に示します。

図1‒9 集約機能の使用例(集約結果がオーバーフローした場合)

[図データ]

<説明>
  1. 同一キー(支店コード:03)の集約結果(売上数量:711)を,先頭レコード(1レコード目)を基に作成して出力する。

  2. 同一キー(支店コード:04)で集約するとオーバーフローするレコードの前のレコードまでの集約結果(売上数量:866)を,先頭レコード(3レコード目)を基に作成して出力する。

  3. 2.の次レコードからの同一キー(支店コード:04)の集約結果(売上数量:355)を,先頭レコード(5レコード目)を基に作成して出力する。

  4. 同一キー(支店コード:05)で集約するとオーバーフローする前のレコードまでの集約結果(売上数量:999)を,先頭レコード(7レコード目)を基に作成して出力する。

  5. 4.の次レコードからの同一キー(支店コード:05)の集約結果(売上数量:608)を,先頭レコード(9レコード目)を基に作成して出力する。

  6. 同一キー(支店コード:06)で集約するとオーバーフローするレコードの前レコードまでの集約結果(売上数量:591)を,先頭レコード(10レコード目)を基に作成して出力する。

  7. 6.の次レコードからの同一キー(支店コード:06)で集約するとオーバーフローするレコードの前レコードまでの集約結果(売上数量:487)を,先頭レコード(11レコード目)を基に作成して出力する。

  8. 7.の次レコードからの同一キー(支店コード:06)の集約結果(売上数量:513)を,先頭レコード(12レコード目)を基に作成して出力する。

集約機能に関連するオプション機能を次に示します。