ABAPの内部テーブルでデータを集計・グループ化する方法を学びましょう。
クラスにはinitial_numbersという名前の内部テーブルが渡されます。このテーブルにはGROUPとNUMBERという2つの列があります。
TYPES: BEGIN OF initial_numbers_type,
group TYPE group,
number TYPE i,
END OF initial_numbers_type,
initial_numbers TYPE STANDARD TABLE OF initial_numbers_type WITH EMPTY KEY.
このテーブルのデータは、A・B・Cの3つのグループで構成されています。各グループには複数のレコードがあります。
| GROUP | NUMBER |
|---|---|
| A | 10 |
| B | 5 |
| A | 6 |
| C | 22 |
| A | 13 |
| C | 500 |
ここでのタスクは、グループごとに1件のレコードを持つ内部テーブルを返すことです。このレコードには、元のテーブルにおけるグループごとのレコード数(COUNT)、そのグループ内のすべてのNUMBER値の合計(SUM)、グループ内の最小値(MIN)、最大値(MAX)、そのグループ内のすべての値の平均(AVERAGE)を含める必要があります。
返すべきテーブルは、次のように定義されています。
TYPES: BEGIN OF aggregated_data_type,
group TYPE group,
count TYPE i,
sum TYPE i,
min TYPE i,
max TYPE i,
average TYPE f,
END OF aggregated_data_type,
aggregated_data TYPE STANDARD TABLE OF aggregated_data_Type WITH EMPTY KEY.
ABAPでこのタスクを達成する方法はたくさんあります。どれだけ効率よくタスクを完了できるでしょうか? テーブルの各レコードを一度だけ読み取るだけで、実現できるでしょうか?