본문 바로가기
클래스 리뷰/22.05 빡공단 SQL 강의

빡공단 22기 도전기 - SQL CASE WHEN (15일차)

by 직_장인 2022. 11. 30.

 

 
CASE WHEN : 원하는 조건 만들기

 

- CASE문은 함수가 아닌 표현식의 일종, 여러 함수나 연산자를 이용하여 조건을 만드는 방법

- DECODE 동등조건에서 사용, 오라클에서만 사용 가능

 

1. 단일 조건

1-1. DECODE()

SELECT 컬럼명
     , DECODE(컬럼명, 조건, 1(반환결과1), 0(반환결과2)) -- 맞으면 1, 틀리면 0 출력
  FROM 테이블명
  ;
 

 

1-2. CASE WHEN()

SELECT 컬럼명
     , CASE WHEN 컬럼명 = 조건 THEN 1(반환결과1) ELSE 0(반환결과2) END -- 맞으면 1, 틀리면 0 출력
  FROM 테이블명
  ;
 

 

2. 다중 조건

2-1. DECODE()

SELECT 컬럼명
     , DECODE(컬럼명, 조건1, 반환결과1, 조건2, 반환결과2 ... 반환결과3)
  FROM 테이블명
  ;
 

 

2-2. CASE WHEN()

SELECT 컬럼명
     , CASE WHEN 컬럼명 = 조건1 THEN 반환결과1
            WHEN 컬럼명 = 조건2 THEN 반환결과2
            WHEN 컬럼명 = 조건3 THEN 반환결과3
            ELSE 반환결과4 END
  FROM 테이블명
  ;
 

 

3. 예외 조건

3-1. 구간조건

  • 일반적으로 1:1대응 조건이라면 DECODE가 간결하고 편하지만, 구간에 대한 조건의 경우는 CASE WHEN으로 작성해야 한다.

 

3-2. null값 처리

 

4. 연습문제

  • 사원의 입사일 ~2020.1.1 까지의 근속개월수를 구해 근속년수로 산출
  • 근속년수가 15년을 초과하면 기본급여에 보너스 10,000 추가
  • 근속년수가 10년을 초과, 15년 이하이면 보너스 7,000 추가
  • 근속년수가 10년 이하이면 보너스를 5,000추가

 

15일차 인증!

 

 

댓글