SELECT ๊ทธ๋ฃน ํจ์
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;