๋ฐ˜์‘ํ˜•

๋ฐ์ดํ„ฐ์˜ ๊ทธ๋ฃนํ™”

 

GROUB BY

 

 

1. ์—ด ์ด๋ฆ„์œผ๋กœ ๊ทธ๋ฃนํ™”

 

์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ SELECT๋ฌธ์˜ ๋ชจ๋“  ์—ด์€ GROUB BY์ ˆ์— ์žˆ์–ด์•ผํ•จ

 

SELECT ๊ทธ๋ฃนํ™”ํ•  ์—ด ์ด๋ฆ„1, ๊ทธ๋ฃนํ™”ํ•  ์—ด ์ด๋ฆ„2, ์ง‘๊ณ„ ํ•จ์ˆ˜
FROM ํ…Œ์ด๋ธ”๋ช…
WHERE ์กฐ๊ฑด์ ˆ
GROUB BY ์—ด ์ด๋ฆ„1, ์—ด ์ด๋ฆ„2;

 

2. ์—ด ์œ„์น˜๋กœ ๊ทธ๋ฃนํ™”

 

SELECT ๊ทธ๋ฃนํ™”ํ•  ์—ด ์ด๋ฆ„1, ๊ทธ๋ฃนํ™”ํ•  ์—ด ์ด๋ฆ„2, ์ง‘๊ณ„ ํ•จ์ˆ˜
FROM ํ…Œ์ด๋ธ”๋ช…
WHERE ์กฐ๊ฑด์ ˆ
GROUB BY 1, 2;

 

PPC_201312 ํ…Œ์ด๋ธ”

 

1. PPC_201312 ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๊ฐ๋“ฑ๊ธ‰๋ณ„ ์ธ๋‹น ํ‰๊ท  ์—ฐ ์ˆ˜์ต์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด?

 

SELECT SEG, ANNL_REV
FROM PPC_201312
GROUP BY SEG;

 

2. PPC_201312 ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์นด๋“œ์ƒํ’ˆ๊ณผ ๋Œ€์ถœ์ƒํ’ˆ ๋ณด์œ  ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์•Œ์•„๋ณด๋ ค๋ฉด?

 

SELECT CARD_FLG, LOAN_FLG, CNT
FROM PPC_201312
GROUP BY CARD_FLG, LOAN_FLG;

 

1. ์›ํ•˜๋Š” ์—ด์„ GROUP BY์ ˆ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค

=> GROUP BY์ ˆ์— ํฌํ•จ๋˜๋Š” ์—ด์ด ํ•œ ๊ฐœ์”ฉ ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ์ฐจ์›์ด ํ•œ ๊ฐœ์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ  ์ข€ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Œ

2. GROUP BY์ ˆ์€ WHERE ์กฐ๊ฑด์ ˆ ๋’ค์— ์œ„์น˜ํ•˜๊ณ , ORDER BY์ ˆ ์•ž์— ์œ„์น˜ํ•œ๋‹ค

3. ๊ทธ๋ฃนํ™”๋œ ์—ด์— NULL๊ฐ’์„ ํฌํ•จํ•  ๊ฒฝ์šฐ NULL๊ฐ’๋„ ๊ทธ๋ฃนํ™” ๋œ๋‹ค

=> NULL๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ ํฌํ•จํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ NULL๊ฐ’์œผ๋กœ ๊ทธ๋ฃนํ™”๋จ

 

๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ํ•„ํ„ฐ๋ง

 

1. ๊ทธ๋ฃนํ™” ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋งํ•˜๊ธฐ

 

HAVING์€ WHERE ์กฐ๊ฑด์ ˆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์กฐ๊ฑด์„ ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

 

=> ์ฐจ์ด๋Š” HAVING์€ ๊ทธ๋ฃนํ™”๋œ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์กฐ๊ฑด์„ ์คŒ

 

SELECT ๊ทธ๋ฃนํ™”ํ•  ์—ด ์ด๋ฆ„1, ์ง‘๊ณ„ ํ•จ์ˆ˜
FROM ํ…Œ์ด๋ธ”๋ช…
WHERE ์กฐ๊ฑด์ ˆ
GROUP BY ์—ด ์ด๋ฆ„1
HAVING ์ง‘๊ณ„ ํ•จ์ˆ˜ ์กฐ๊ฑด;

 

PROD_SALES ํ…Œ์ด๋ธ”

 

1. ๊ตฌ๋งคํšŸ์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ์ธ ๊ณ ๊ฐ์—๊ฒŒ ๋งˆ์ผ€ํŒ…์„ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋งˆ์ผ€ํŒ… ๋Œ€์ƒ์ž๋Š” ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ์•„๋‚ด๋ ค๋ฉด?

 

SELECT CUST_NM, COUNT(*) AS CNT
FROM PROD_SALES
GROUP BY CUST_NM
HAVING COUNT(*) >= 2;

 

2. ๊ตฌ๋งค๊ธˆ์•ก์˜ ํ‰๊ท ์ด 7๋งŒ์› ์ด์ƒ์ธ ๊ณ ๊ฐ์—๊ฒŒ ๋งˆ์ผ€ํŒ…์„ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋งˆ์ผ€ํŒ… ๋Œ€์ƒ์ž๋Š” ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ์•„๋‚ด๋ ค๋ฉด?

 

SELECT CUST_NM, AVG(SALES_AMT) AS SALES_AMT
FROM PROD_SALES
GROUB BY CUST_NM
HAVING AVG(SALES_AMT) >= 70000;

 

1. ๊ทธ๋ฃนํ™” ํ•„ํ„ฐ๋ง ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ ORDER BY์ ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

2. WHERE ์กฐ๊ฑด์ ˆ์˜ ์กฐ๊ฑด์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋ฃนํ™”๋˜๊ธฐ ์ „์— ํ•„ํ„ฐ๋งํ•˜๊ณ , HAVING์ ˆ์˜ ์กฐ๊ฑด์„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋ฃนํ™”๋œ ํ›„์— ํ•„ํ„ฐ๋งํ•œ๋‹ค

=> WHERE ์กฐ๊ฑด์ ˆ์— ์˜ํ•ด ์ œ์™ธ๋œ ํ–‰์€ ๊ทธ๋ฃนํ™”ํ•  ๋•Œ๋„ ์ œ์™ธ๋˜๊ธฐ ๋•Œ๋ฌธ์— HAVING์ ˆ์˜ ๊ณ ๋ ค ๋Œ€์ƒ์ด X
๋ฐ˜์‘ํ˜•