songining
article thumbnail

7์ ˆ. GROUP BY, HAVING ์ ˆ 

์ง‘๊ณ„ ํ•จ์ˆ˜(๋‹ค์ค‘ ํ–‰ ํ•จ์ˆ˜) 

์—ฌ๋Ÿฌ ํ–‰๋“ค์˜ ๊ทธ๋ฃน์ด ๋ชจ์—ฌ์„œ ๊ทธ๋ฃน๋‹น ๋‹จ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

- SELECT, HAVING, ORDER BY ์ ˆ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ 

- ํ…Œ์ด๋ธ” ์ „์ฒด ์ง‘๊ณ„๋ฅผ ์œ„ํ•ด GROUP BY ์ ˆ ์—†์ด๋„ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์ง‘๊ณ„ํ•จ์ˆ˜์ค‘ MAX,MIN,COUNT๋Š” ๋ฌธ์ž,๋‚ ์งœ ์œ ํ˜•์—๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

COUNT(*) - NULL ๊ฐ’์„ ํฌํ•จํ•œ ํ–‰์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

COUNT(ํ‘œํ˜„์‹) - ํ‘œํ˜„์‹์˜ ๊ฐ’์ด NULL ๊ฐ’์ธ ๊ฒƒ์„ ์ œ์™ธํ•œ ํ–‰์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

SUM(ํ‘œํ˜„์‹) - NULL๊ฐ’์„ ์ œ์™ธํ•œ ํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

AVG(ํ‘œํ˜„์‹) - NULL๊ฐ’์„ ์ œ์™ธํ•œ ํ‰๊ท ์„ ์ถœ๋ ฅํ•œ๋‹ค.

MAX(ํ‘œํ˜„์‹) - ์ตœ๋Œ€๊ฐ’ ์ถœ๋ ฅ

MIN(ํ‘œํ˜„์‹) - ์ตœ์†Œ๊ฐ’ ์ถœ๋ ฅ

STDDEV(ํ‘œํ˜„์‹) - ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ์ถœ๋ ฅ

VARIAN(ํ‘œํ˜„์‹) - ๋ถ„์‚ฐ ์ถœ๋ ฅ 

 

GROUP BY ์ ˆ

- GROUP BY ์ ˆ์€ FROM์ ˆ WHERE ์ ˆ ๋’ค์— ์˜ค๋ฉฐ GRUOP BY ์ ˆ์€ ํ–‰๋“ค์„ ์†Œ๊ทธ๋ฃนํ™” ํ•œ๋‹ค. 

- GROUP BY ์ ˆ์„ ํ†ตํ•ด ์†Œ๊ทธ๋ฃน๋ณ„ ๊ธฐ์ฃผ์„ ์ •ํ•œ ํ›„, SELECT ์ ˆ์— ์ง‘๊ณ„ํ•จ์ˆ˜ ์‚ฌ์šฉํ•œ๋‹ค.

- GROUP BY ์ ˆ์—์„œ๋Š” SELECT์ ˆ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ALIAS๋ช…์„ ์‚ฌ์šฉํ•  ์ˆ˜ X 

- GROUP BY ์ดํ›„ ์†Œ๊ทธ๋ฃนํ™”๊ฐ€ ์ง„ํ–‰๋œ ์ƒํ™ฉ์—์„œ ์ˆ˜ํ–‰์ ˆ์ธ SELECT ๋‚˜ ORDER BY์ ˆ์—์„œ ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

- ์ˆœ์„œ๋Š” SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY 

- ์ง‘๊ณ„ํ•จ์ˆ˜์˜ ํ†ต๊ณ„์ •๋ณด๋Š” NULL๊ฐ’์„ ๊ฐ€์ง„ ํ–‰์„ ์ œ์™ธํ•˜๊ณ  ์ˆ˜ํ–‰ํ•œ๋‹ค.

- ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” WHERE ์ ˆ์—๋Š” ์˜ฌ ์ˆ˜ ์—†๋‹ค.

- ์˜ˆ์‹œ) 

์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด GROUP BY ์ ˆ์—์„œ ๊ทธ๋ฃน ๋‹จ์œ„๋ฅผ ํ‘œ์‹œํ•ด ์ฃผ์–ด์•ผ SELECT ์ ˆ์—์„œ ๊ทธ๋ฃน ๋‹จ์œ„์˜ ์นผ๋Ÿผ๊ณผ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

+) ์ค‘์ฒฉ๋œ ๊ทธ๋ฃนํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ GROUP BY์ ˆ์— ๊ธฐ์ˆ ํ•œ ์นผ๋Ÿผ์€ ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋‹ค. 

EX) AVG(COUNT(*))๊ฐ€ SELECT์ ˆ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๊ฐ’์€ 1ํ–‰์ด ๋˜๋Š”๋ฐ ์ด๋•Œ GROUP BY์ ˆ์— ๊ธฐ์ˆ ํ•œ ์ปฌ๋Ÿผ๋„ ํ•จ๊ป˜ ์ถœ๋ ฅํ•  ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ 

 

HAVING ์ ˆ

- HAVING ์ ˆ์€ WHERE์ ˆ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ GROUP BY์ ˆ์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์†Œ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด์ด ์ ์šฉ๋œ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

- HAVING ์ ˆ์€ ์ง‘๊ณ„ํ•จ์ˆ˜ ๋˜๋Š” ๊ทธ๋ฃนํ•‘๋œ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. 

- ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ณด๋Š”๊ฒฝ์šฐ GROUP BY ์—†์ด ๋‹จ๋…์œผ๋กœ ์“ฐ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. 

- ์˜ˆ์‹œ) 

์ง‘๊ณ„ํ•จ์ˆ˜์™€ NULL ์ฒ˜๋ฆฌ

- ์ง์›๋“ค ๊ธ‰์—ฌ์˜ ์ดํ•ฉ์„ ๊ตฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ดํ•ฉ์ด NULL์ธ ๊ฒฝ์šฐ์—๋Š”?

SUM(NVL(SAL,0))๋ณด๋‹ค๋Š” NVL(SUM(NVL),0) ์‚ฌ์šฉํ•˜์ž. ์–ด์ฐจํ”ผ NULL์ธ ํ–‰์„ ๋‹ค์ค‘ ํ–‰ ํ•จ์ˆ˜์˜ ๋Œ€์ƒ์—์„œ ์ œ์™ธํ•˜๋ฏ€๋กœ.