<DECODE 함수>
-
DECODE: 조건에 따라 데이터를 다른 값이나 컬럼 값으로 추출
-
DECODE (value, if1, then1, if2, then2...)
-
value값이 if1일 경우 then1 값을 반환,
-
value값이 if2일 경우 then2 값을 반환
1
2
3
4
5
6
|
SELECT last_name 이름, job_id, salary,
DECODE(job_id, 'IT_PROG', salary*1.10,
'ST_CLERK', salary*1.15,
'SA_REP', salary*1.20,
salary) 수정월급
FROM employees;
|
cs |
<DECODE 함수 예제>
-
employees 테이블에서 DECODE 함수를 이용하여 월급에 따른 세율 출력
1
2
3
4
5
6
7
8
9
10
|
SELECT last_name 이름, job_id 직무, salary 월급,
DECODE(TRUNC(salary/2000), '0', '0.00',
'1', '0.09',
'2', '0.2',
'3', '0.3',
'4', '0.4',
'5', '0.42',
'6', '0.44',
'0.45') 세율
FROM employees;
|
cs |
<CASE 함수>
-
CASE: DECODE함수가 제공하지 못하는 비교연산의 단점을 해결할 수 있는 함수
-
조건 연산자를 모두 사용
-
CASE함수는 IF, THEN, ELSE 구문과 비슷
-
WHEN다음에 여러 조건이 올 수 있음
1
2
3
4
5
6
7
|
SELECT last_name 이름, job_id, salary,
CASE WHEN salary < 5000 THEN 'Low'
WHEN salary < 10000 THEN 'Medium'
WHEN salary < 20000 THEN 'Good'
ELSE 'Excellent'
END "급여 수준"
FROM employees;
|
cs |
<CASE 함수 예제>
-
employees 테이블에서 job_id가 IT_PROG라면 employee_id, first_name, last_name, salary를 출력하되 salary가 9000이상이면 '상위급여', 6000과 8999사이면 '중위급여', 그 외는 '하위급여'라고 출력
1
2
3
4
5
6
7
|
SELECT employee_id, first_name, last_name, salary,
CASE WHEN salary >= 9000 THEN '상위급여'
WHEN salary >= 6000 THEN '중위급여'
ELSE '하위급여'
END "급여등급"
FROM employees
WHERE job_id = 'IT_PROG';
|
cs |
'Learning > SQL' 카테고리의 다른 글
조인 (JOIN) - 동등조인 (0) | 2020.06.17 |
---|---|
집계 함수 (그룹 함수) (0) | 2020.06.16 |
NULL 관련 함수 (0) | 2020.06.16 |
변환형 함수 (0) | 2020.06.16 |
날짜형 함수 (0) | 2020.06.15 |