티스토리 뷰
Case 식
CASE 좌변 WHEN 우변 THEN 반환
(좌변과 우변이 같으면)
[ELSE] 식
END
표기된 부서에 속한 사람들의 연봉을 각각의 값으로 조정하고
나머지는 연봉 변화없이 출력
SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "REVISED_SALARY"
FROM employees;
SELECT last_name, job_id, salary,
CASE WHEN job_id = 'IT_PROG' THEN 1.1*salary
WHEN job_id = 'ST_CLERK'THEN 1.15*salary
WHEN job_id = 'SA_REP' THEN 1.2*salary
ELSE salary END "REVISED_SALARY"
FROM employees;
위와 같이 CASE 표현식으로도 표현할 수 있다.
하지만 job_id가 반복되고 = 의 연산식을 쓸 거라면 CASE 식 표현이 간단할 수 있으니 차이점 유의!
CASE 표현식
CASE 식의 비교연산자는 = (equal)이 내포되어있다.
CASE 표현식은 비교연산자를 원하는대로 쓸 수 있다.
CASE
WHEN 연산식 THEN 표현식
WHEN 연산식 THEN 표현식
ELSE 디폴트 표현식
END
연봉에 따른 등급과 함께 출력하기!
SELECT last_name, salary,
(CASE WHEN salary<5000 THEN 'Low'
WHEN salary<10000 THEN 'Medium'
WHEN salary<20000 THEN 'Good'
ELSE 'Excellent'
END) qualified_salary
FROM employees;
DECODE 함수
CASE 식과 같다( =를 내포)
DECODE (좌변, 우변, 반환할 값(result)
[ , 우변, 반환할값...]
[ , default ])
CASE 식 예제를 DECODE 함수로 표현
SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP', 1.20*salary,
salary)
REVISED_SALARY
FROM employees;
급여에 따른 세금을 반환
'배운 것 기록 > DB' 카테고리의 다른 글
[Oracle] DCL - GRANT (0) | 2022.08.25 |
---|---|
[Oracle] CASE / DECODE 연습 (0) | 2022.08.19 |
[Oracle] Data Dictionary - object (0) | 2022.08.18 |
[MySQL] AWS RDS Spring / Workbench 연동 (0) | 2022.08.17 |
[MySQL] AWS RDS 생성 및 설정 (0) | 2022.08.16 |
댓글