CS Student’s SAP&Tech Journey✨
[SAP] 집계 함수(Aggregate Function) - MIN, MAX, SUM, COUNT, GROUP BY, HAVING 본문
[SAP] 집계 함수(Aggregate Function) - MIN, MAX, SUM, COUNT, GROUP BY, HAVING
인포마틱 2025. 2. 14. 21:40SAP ABAP에서 데이터를 효율적으로 조회하고 분석하려면 집계 함수(Aggregate Function)를 활용하는 것이 중요합니다. 집계 함수는 여러 행(Row)의 값을 하나의 결과 값으로 계산하는 함수로, SQL과 함께 사용하여 데이터를 효과적으로 처리할 수 있습니다.
이번 포스팅에서는 ABAP에서 사용할 수 있는 집계 함수의 종류와 활용법을 정리해보겠습니다.
📌 1. 집계 함수(Aggregate Function)란?
집계 함수는 테이블의 여러 행(Row) 데이터를 하나의 값으로 변환하는 함수입니다.
예를 들어, 학생 테이블에서 최대 나이, 최소 나이, 전체 학생 수, 평균 연봉 등을 구할 때 사용할 수 있습니다.
✅ ABAP에서 사용 가능한 집계 함수
⭐ 괄호안에 띄어쓰기 꼭 주의할 것!
집계 함수 | 설명 |
MIN( 컬럼명 ) | 해당 컬럼의 최소값 반환 |
MAX( 컬럼명 ) | 해당 컬럼의 최대값 반환 |
SUM( 컬럼명 ) | 해당 컬럼의 모든 값을 더한 합계 반환 |
AVG( 컬럼명 ) | 해당 컬럼의 평균값 반환 |
COUNT( * ) | 해당 테이블의 전체 행 개수 반환 |
COUNT( 컬럼명 ) | 해당 컬럼에서 NULL이 아닌 값 개수 반환 |
📌 2. 집계 함수 사용
ABAP에서는 집계 함수와 함께 SELECT SINGLE을 사용할 수 없으며, SELECT ... INTO 구문을 활용해야 합니다.
✅ 아래 예시는 ZSTUDENT1_07을 사용합니다.
1️⃣ MIN()과 MAX() 사용법 (최소값, 최대값 구하기)
DATA: lv_min_birth TYPE DATS, " 가장 오래된 생일 (나이 많음)
lv_max_birth TYPE DATS. " 가장 최신 생일 (나이 적음)
SELECT MIN( STDBIRTH ), MAX( STDBIRTH )
INTO (lv_min_birth, lv_max_birth)
FROM ZSTUDENT1_07.
WRITE: '가장 나이 많은 학생 생일:', lv_min_birth,
'가장 나이 어린 학생 생일:', lv_max_birth.
✔ MIN(STDBIRTH), MAX(STDBIRTH)를 사용하여 가장 오래된 생일과 최신 생일을 가져옴
✔ INTO (변수1, 변수2) 형식으로 저장
2️⃣ SUM()과 AVG() 사용법 (합계 및 평균 구하기)
DATA: lv_total_salary TYPE P DECIMALS 2, " 총 연봉
lv_avg_salary TYPE P DECIMALS 2. " 평균 연봉
SELECT SUM( SALARY ), AVG( SALARY )
INTO (lv_total_salary, lv_avg_salary)
FROM ZSTUDENT1_07.
WRITE: '총 연봉 합계:', lv_total_salary,
'평균 연봉:', lv_avg_salary.
✔ SUM(SALARY) → 전체 급여 총합
✔ AVG(SALARY) → 평균 급여
3️⃣ COUNT() 사용법 (행 개수 구하기)
DATA: lv_total_students TYPE I.
SELECT COUNT( * ) INTO lv_total_students
FROM ZSTUDENT1_07.
WRITE: '총 학생 수:', lv_total_students.
✔ COUNT(*)를 사용하면 테이블의 총 행 수를 가져올 수 있음
✔ 특정 조건을 추가해서 원하는 데이터만 개수 셀 수도 있음
DATA: lv_cs_students TYPE I.
SELECT COUNT( * ) INTO lv_cs_students
FROM ZSTUDENT1_07
WHERE STDMAJOR = '컴퓨터'.
WRITE: '컴퓨터공학 전공 학생 수:', lv_cs_students.
✔ 컴퓨터 전공 학생 수만 카운트
4️⃣ GROUP BY와 함께 사용하기 (집계 함수 + 그룹화)
GROUP BY를 사용하면 특정 컬럼을 기준으로 데이터를 그룹화하여 집계할 수 있습니다.
✅ 전공별 학생 수 구하기
DATA: lt_result TYPE TABLE OF ZSTUDENT1_07,
ls_result TYPE ZSTUDENT1_07.
SELECT STDMAJOR, COUNT( * )
INTO TABLE lt_result
FROM ZSTUDENT1_07
GROUP BY STDMAJOR.
LOOP AT lt_result INTO ls_result.
WRITE: / ls_result-STDMAJOR, ls_result-STDBIRTH.
ENDLOOP.
✔ GROUP BY STDMAJOR → 전공별로 그룹화
✔ COUNT(*) → 각 전공에 속한 학생 수를 반환
5️⃣ HAVING과 함께 사용하기 (조건 추가)
집계 결과에서 특정 조건을 추가하려면 HAVING을 사용해야 합니다.
✅ 학생 수가 3명 이상인 전공만 조회
DATA: lt_result TYPE TABLE OF ZSTUDENT1_07,
ls_result TYPE ZSTUDENT1_07.
SELECT STDMAJOR, COUNT( * )
INTO TABLE lt_result
FROM ZSTUDENT1_07
GROUP BY STDMAJOR
HAVING COUNT( * ) >= 3.
LOOP AT lt_result INTO ls_result.
WRITE: / ls_result-STDMAJOR, ls_result-STDBIRTH.
ENDLOOP.
✔ HAVING COUNT(*) >= 3 → 학생이 3명 이상인 전공만 출력
'SAP > ABAP 문법 | Open SQL' 카테고리의 다른 글
[SAP] OPEN SQL 데이터 삽입 / 수정 / 삭제 / 트랜잭션 처리 (0) | 2025.03.28 |
---|---|
[SAP] SELECT * / SELECT SINGLE 필드 / SELECT SINGLE * 총정리 (0) | 2025.02.08 |
[SAP] SELECT SINGLE과 SELECT의 차이 / 변수 접두사 정의하기 (0) | 2025.01.31 |
[SAP] 시스템 변수 SY-XXXX 한눈에 정리하기 (0) | 2025.01.30 |
[SAP] 반복문 DO, WHILE (0) | 2025.01.30 |