์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- PRD
- t์ฝ๋
- tasknumber
- ์ค๋ฒ2
- screen program
- select
- ๋๋น์ฐ์ ํ์
- abap dictionary
- ์ค๋ฒ3
- qas
- ๋ชจ๋ํ
- SAP
- call function
- dev
- ABAP
- Import
- structure
- ์๊ณ ๋ฆฌ์ฆ
- ์คํธ๋ญ์ฒ
- Function Module
- Export
- ๊น์ด์ฐ์ ํ์
- screen
- ๋ฐฑ์ค
- subscreen
- Internal Table
- ๋จ๋ฐฉํฅํ์
- ์ด๋ถํ์
- modify
- ์๋ฐฉํฅํ์
- Today
- Total
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 |