이번 글에서는 DECODE와 CASE에 대해서 정리해보겠습니다.
decode와 case는 마치 프로그래밍에서 if문을 쓰는 것과 거의 비슷합니다.
의미상으론 같다고 볼 수도 있겠네요.
if문은
만약 ~라면 .... 아니면 이거라면 ... 그 외에 아무것도 아니면 ...
이런식으로 흘러가죠.
decode와 case 도 똑같습니다.
그런데 둘이 나눠진건 이유가 있겠죠.
하나하나 알아보겠습니다.
1. DECODE
- decode(특정 컬럼, 만약 이거라면, 이렇게, 만약 이거라면, 이렇게, 둘 다 아니면 요거)
예시 문항을 들겠습니다.
job 컬럼이 'CLERK'이면 급여를 10퍼 인상
job 컬럼이 'SALESMAN'이면 급여를 5퍼 인상
둘 다 아니면, 기존 급여를 출력
위 예시를 decode로 표현하면 이렇습니다.
SELECT ename, job, sal, decode(job, 'CLERK', sal * 1.1, 'SALESMAN', sal * 1.05, sal) as new_sal
FROM emp;
2. CODE
code는 두 가지 종류가 있습니다.
1) 단순(simple) case : 이는 decode와 같은 역할을 수행합니다.
2) 검색(Search) case : 특정 컬럼에 종속되지 않고 컬럼을 지정해서 역할을 수행합니다.
decode에서 제시한 문제로 예시를 보겠습니다.
SELECT ename, job, sal, case when job = 'CLERK' then sal * 1.1
when job = 'SALESMAN' then sal * 1.05
else sal end new_sal
FROM emp;
code의 형태를 잘 보시면
when과 then으로 이뤄져서, 'when ~라면, then 이렇게' 형태로 이뤄지다가
마지막에는 '다 아니면 else 이렇게' 로 끝내고
end로 마무리 지었습니다.
즉, case는 사용자가 직접 검색을 하고 그에 맞는 조건을 설정할 수 있습니다.
문제 하나 보여드릴테니 직접 해보시길 추천합니다.
만약 급여가 3000 이상이면 '1등급'
급여가 1500 이상이면 '2등급'
그 외는 '3등급' 을 지정하고 HEADING을 grade로 표기한 쿼리를 작성하세요.
아래와 같이 결과가 나오시면 됩니다.
여기까지 decode와 case에 대한 정리 글이였습니다.