DB

SELECT ๊ทธ๋ฃน ํ•จ์ˆ˜

byeol_dev 2023. 4. 13. 17:02

SELECT * FROM EMP;

-- ๊ทธ๋ฃน ํ•จ์ˆ˜
-- ๋ชจ๋“  ์‚ฌ์›์˜ ๊ธ‰์—ฌ์˜ ์ดํ•ฉ

SELECT SUM(SAL) FROM EMP;


๋ถ€์„œ๋ณ„๋กœ ๊ธ‰์—ฌ์˜ ์ดํ•ฉ, ๊ธ‰์—ฌ์˜ ํ‰๊ท , ๋ถ€์„œ์› ์ˆ˜ ์กฐํšŒ
GROUP BY๋ฅผ ์“ฐ๋ฉด SELECT ์ ˆ์— ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ์ด ํŠน์ •๋จ.
1.๊ทธ๋ฃนํ•‘ํ•œ ์ปฌ๋Ÿผ(์‹ค์ œ๋กœ ๊ทธ๋ฃน์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ์ปฌ๋Ÿผ)
 2.๊ทธ๋ฃนํ•จ์ˆ˜(SUM, AVG, COUNT ...)

SELECT DEPTNO, SUM(SAL), AVG(SAL), COUNT(EMPNO)
FROM EMP
GROUP BY DEPTNO;



์ง๊ธ‰๋ณ„ ์ธ์›์ˆ˜ ๋ฐ ํ•ด๋‹น ์ง๊ธ‰์—์„œ ๊ฐ€์žฅ ๋†’์€ ๊ธ‰์—ฌ ๋ฐ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ธ‰์—ฌ๋ฅผ ์กฐํšŒ
๋‹จ, ์ง๊ธ‰์ด '์‚ฌ์žฅ'์ธ ์‚ฌ๋žŒ ์ œ์™ธ
WHERE์ ˆ์€ FROM์ ˆ ๋ฐ”๋กœ ๋ฐ‘์— ์ž‘์„ฑ.

SELECT JOB, MAX(SAL), MIN(SAL), COUNT(JOB)
FROM EMP
WHERE JOB != '์‚ฌ์žฅ'
GROUP BY JOB;


์ง๊ธ‰๋ณ„ ์ธ์›์ˆ˜ ๋ฐ ํ•ด๋‹น ์ง๊ธ‰์—์„œ ๊ฐ€์žฅ ๋†’์€ ๊ธ‰์—ฌ ๋ฐ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ธ‰์—ฌ๋ฅผ ์กฐํšŒ
๋‹จ, ์ง๊ธ‰๋ณ„ ์ตœ์†Œ ๊ธ‰์—ฌ๊ฐ€ 300 ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ
์ง๊ธ‰๋ณ„ ์ตœ์†Œ ๊ธˆ์•ก์€ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ ๋‹ค์Œ์— ์กฐ๊ฑด์„ ๊ฑฐ๋Š” ๊ฒƒ > HAVING์ ˆ ์‚ฌ์šฉ

SELECT JOB, MAX(SAL), MIN(SAL), COUNT(JOB)
FROM EMP
GROUP BY JOB
HAVING MIN(SAL) >= 300;


๋ถ€์„œ๋ณ„๋กœ ๋ถ€์„œ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ์˜ ํ•ฉ, ์ปค๋ฏธ์…˜์˜ ํ•ฉ, ์ปค๋ฏธ์…˜ ํ‰๊ท ์„ ์กฐํšŒ, 10๋ฒˆ ๋ถ€์„œ๋Š” ์ œ์™ธ
๋ถ€์„œ๋ณ„ ๊ธ‰์—ฌ์˜ ํ•ฉ์ด 300 ๋ฏธ๋งŒ์ธ ๋ถ€์„œ ์ œ์™ธ
๋ถ€์„œ๋ฒˆํ˜ธ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
์ปค๋ฏธ์…˜์ด ์—†์œผ๋ฉด 0์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ํ•˜๋ ค๋ฉด NVL(์ฒซ๋ฒˆ์งธ์ธ์ž๊ฐ€ NULL์ด๋ฉด ๋‘๋ฒˆ์งธ์ธ์ž๋กœ ๋ฐ”๊ฟˆ) ์‚ฌ์šฉ
์—ฐ์‚ฐํ•  ๋•Œ NAL๋กœ ๋จผ์ € NULL์„ 0์œผ๋กœ ์น˜ํ™˜ํ•˜๊ณ  ์—ฐ์‚ฐํ•ด์•ผ ํ•จ.
ํ‰๊ท  ๊ฐ’์€ ๊ตฌํ•  ๋•Œ NULL์€ ์นด์šดํŠธ ์•ˆ ํ•˜๊ณ  ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— 0์œผ๋กœ ๋จผ์ € ๋ฐ”๊ฟ”์•ผ ๋งž์Œ.

SELECT DEPTNO, SUM(SAL), SUM(NVL(COMM,0)), AVG(NVL(COMM,0))
FROM EMP
WHERE DEPTNO != 10 --๊ทธ๋ฃน์œผ๋กœ ์•ˆ ๋ฌถ์–ด๋„ ๋˜๋Š” ์กฐ๊ฑด์€ WHERE
GROUP BY DEPTNO
HAVING SUM(SAL) >= 300
ORDER BY DEPTNO DESC;