티스토리 뷰

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;

 

결과, IT_PROG의 salary가 오른 걸 볼 수 있다!

 

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;

 

 

 

급여에 따른 세금을 반환

 

TRUNC(salary/2000, 0)이 좌변이다.

 

'배운 것 기록 > 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
댓글
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함