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에서 이 과제를 해내는 방법은 여러 가지예요. 얼마나 효율적으로 과제를 완수할 수 있을까요? 테이블의 각 레코드를 딱 한 번씩만 읽으면서 해낼 수 있나요?