DECODE ํจ์
DECODE ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ด์ ์กฐ๊ฑด๋ฌธ ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฒซ๋ฒ์งธ ์ธ์๋ก ํ์ธํ ๋์์ ๋ฃ์ด์ฃผ๊ณ 2๋ฒ์งธ ์ธ์์ ํ์ธํ ๋์์ ์์ธก ๊ฐ์ด ์์ผ๋ฉด 3๋ฒ์งธ ์ธ์๋ฅผ ์์ผ๋ฉด 4๋ฒ์งธ ์ธ์์ ๊ฐ์ ๋ฐํํด์ค๋๋ค.
CASE ํํ์๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ฒ์์์ ์กฐ๊ฑด์ ๋ฃ์์ ์๊ณ 2๋ฒ์งธ ์ธ์๊ฐ ์๋์ง ์๋์ง ํ์ธํฉ๋๋ค. Oracle Scott ๊ณ์ ์ผ๋ก DECODE ํจ์ ์ฌ์ฉ ์์๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
์ธ๋ก๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ก๋ก
1
2
3
4
5
6
|
SELECT
DEPARTMENT_ID
,SUM(SALARY)
FROM EMPLOYEES
WHERE DEPARTMENT_ID <=30
GROUP BY DEPARTMENT_ID;
|
๋ถ์๋ฒํธ๊ฐ 30 ์ดํ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ถ์๋ก GROUP BY ํ์ต๋๋ค. ์ธ๋กํํ๋ก ๋์ด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก๋ก ๋ณํ์์ผ์ฃผ๋ ์์ ๋ฅผ DECODE ํจ์๋ฅผ ์ด์ฉํด์ ํํํด๋ณด๊ฒ ์ต๋๋ค.
1
2
3
4
5
6
|
SELECT
SUM(DECODE(DEPARTMENT_ID, 10, SALARY, 0)) AS "10"
,SUM(DECODE(DEPARTMENT_ID, 20, SALARY, 0)) AS "20"
,SUM(DECODE(DEPARTMENT_ID, 30, SALARY, 0)) AS "30"
,SUM(DECODE(DEPARTMENT_ID, 400, SALARY,0)) AS "400"
FROM EMPLOYEES;
|
DEPARTMENT_ID๊ฐ ๊ฐ๊ฐ 10, 20, 30 ์ธ์ง ํ์ธํ๊ณ ํด๋น ํ์ SALARY ๊ฐ์ SUMํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ค๋๋ค. 400๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ์ ์์ผ๋ฏ๋ก 0์ ๋ฐํํ๋๋ก ๋ง์ง๋ง ํ์ผ ์ง์ ํด์คฌ์ต๋๋ค.
๋๊ธ