만약 사원들의 1년치 연봉을 알고 싶다면 SALARY 컬럼에 12를 곱하면 될 것이다.
그러나 직급에 따라 연봉 인상률을 달리 가져가고 싶다고 하면 그때는 어떡할 것인가?
그때 쓸 수 있는 것이 조건문이다.
DECODE는 이렇게 생겼다. JOB ID가 이것이면, 이것을 하고, 저것이면, 저것을 하고... 하는 식으로 끊임없이 조건을 달다가, 이도저도 아니면, 이렇게 하자고 하고 괄호를 닫는다.
SELECT last_name, job_id, salary
,DECODE(job_id, 'AD_VP' , salary * 1.3
, 'AC_MGR', salary * 1.25
, 'SA_REP', salary * 1.2
, salary * 1.1) AS NEW_SAL
FROM employees ;
똑같은 결과를 CASE WHEN을 통해서도 구현할 수 있다.
SELECT last_name, job_id, salary
,CASE job_id WHEN 'AD_VP' THEN salary * 1.3
WHEN 'AC_MGR' THEN salary * 1.25
WHEN 'SA_REP' THEN salary * 1.2
ELSE salary * 1.1
END AS NEW_SAL
FROM employees ;
뭘 써도 상관은 없지만 CASE WHEN은 한가지 특장점이 있는데, 그건 비교하는 문장을 사용할 수 있다는 것이다.
SELECT last_name, salary
,CASE WHEN salary >= 20000 THEN '상'
WHEN salary >= 10000 THEN '중'
ELSE '하'
END AS 구분
FROM employees ;
이렇게 뭔가 등급을 정해줄 수도 있다
DB안에서 피벗테이블처럼 보여주고 싶다면 이런 방식을 사용할 수도 있다.
'근거 있는 일하기_SQL' 카테고리의 다른 글
OUTER JOIN 쓸 때 ON과 WHERE에 주는 조건 차이 주의 (0) | 2024.05.04 |
---|---|
JOIN (0) | 2024.04.20 |
오라클 날짜는 항상 시분초를 달고다닌다 (0) | 2024.04.19 |
ROLLUP (0) | 2024.04.19 |
GROUP BY A, B (0) | 2024.04.19 |