ABAP Open SQL SELECT 문: 집계 함수 SUM, AVG, MAX, MIN 등

집계 함수 (Aggregate Functions)

ABAP Open SQL 에서 집계 함수(Functions)는 SELECT 된 테이블의 데이터를 집계 해 통계적 요약 정보를 제공하는 함수다. 예를 들어 테이블 내의 숫자 컬럼이 존재하면 이 컬럼의 조회 된 값을 합계, 평균 등을 내어 이를 표시할 수 있다.

합계 (SUM)

SUM 은 지정한 컬럼의 합계를 계산해 변수에 담는다. 다음은 SFLIGHT 테이블의 fldate 컬럼의 값이 20171219 인 행을 조회 한 결과 이다.

DATA: lt_table TYPE TABLE OF sflight,
      ls_table TYPE sflight.

SELECT *
INTO CORRESPONDING FIELDS OF TABLE lt_table
FROM sflight
WHERE fldate = '20171219'.

LOOP AT lt_table INTO ls_table.
  WRITE: / ls_table-carrid, ls_table-connid, ls_table-fldate, ls_table-price.
ENDLOOP.
ABAP
SFLIGHT 테이블의 FLDATE 컬럼의 값이 20171219 인 행을 조회 한 결과
SFLIGHT 테이블의 FLDATE 컬럼의 값이 20171219 인 행을 조회 한 결과

SUM 을 이용해 조회한 price 컬럼의 값을 합계 하여 출력할 수 있다.

DATA: lv_sum TYPE sflight-price.

SELECT SUM( price )
INTO lv_sum
FROM sflight
WHERE fldate = '20171219'.

WRITE: / 'FLDATE 20171219 PRICE SUM:' , lv_sum.
ABAP
SFLIGHT 테이블의 price SUM 출력 결과
SFLIGHT 테이블의 price SUM 출력 결과

평균 (AVG)

AVG 는 칼럼의 값을 평균 내어 출력 한다. (조회 된 모든 값 더하기 / 값 개수 )

DATA: lv_avg TYPE sflight-price.

SELECT AVG( price )
INTO lv_avg
FROM sflight
WHERE fldate = '20171219'.

WRITE: / 'FLDATE 20171219 PRICE AVG:' , lv_avg.
ABAP
SFLIGHT 테이블의 price AVG 출력 결과
SFLIGHT 테이블의 price AVG 출력 결과

최대 (MAX)

검색 된 값 중에 최대 값을 표시해 준다.

DATA: lv_max TYPE sflight-price.

SELECT MAX( price )
INTO lv_max
FROM sflight
WHERE fldate = '20171219'.

WRITE: / 'FLDATE 20171219 PRICE MAX:' , lv_max.
ABAP
SFLIGHT 테이블의 price MAX 출력 결과
SFLIGHT 테이블의 price MAX 출력 결과

최소 (MIN)

검색 된 값 중에 최소 값을 표시해 준다.

DATA: lv_min TYPE sflight-price.

SELECT MIN( price )
INTO lv_min
FROM sflight
WHERE fldate = '20171219'.

WRITE: / 'FLDATE 20171219 PRICE MIN:' , lv_min.
ABAP
SFLIGHT 테이블의 price MIN 출력 결과
SFLIGHT 테이블의 price MIN 출력 결과

ABAP 집계 함수 장단점

ABAP 집계 함수는 DB 수준에서 집계를 수행해 일반적으로 메모리, CPU 사용량 측면에서 더 효율적 이며 코드가 간결해 진다는 장점이 있다. 그러나, 좀 더 복잡한 계산이 들어 갈 땐 SQL 에서 계산을 전부 수행하는 것이 오히려 복잡하거나 아예 어려울 수 있다.

그래서 단순 집계 (총 합계, 평균 등) 에서는 ABAP 집계 함수를, 여러 계산 식에 다른 복합 계산이 필요 할 땐 변수 단에서 연산자를 이용해 계산 하는 것이 좋다.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤