<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

+ Recent posts