Навчімося агрегувати та групувати дані у внутрішній таблиці ABAP.
Наш клас отримає внутрішню таблицю з назвою initial_numbers. У ній два стовпці: GROUP і NUMBER.
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. У кожній групі є кілька записів.
| GROUP | NUMBER |
|---|---|
| A | 10 |
| B | 5 |
| A | 6 |
| C | 22 |
| A | 13 |
| C | 500 |
Наше завдання - повернути внутрішню таблицю з одним записом на кожну групу. Цей запис має містити кількість записів у початковій таблиці для кожної групи (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 є багато способів виконати це завдання. Наскільки ефективно ми можемо його виконати? Чи вдасться нам зробити це, прочитавши кожен запис у таблиці лише один раз?