🖥️ IT, 컴퓨터/🏁 SQL・빅쿼리

[SQL] `CASE WHEN` 구문이란?

김 홍시 2024. 11. 24.
반응형

SQL의 CASE WHEN 구문은 조건에 따라 다른 값을 반환하거나 특정 동작을 수행하도록 만드는 제어문입니다. 프로그래밍 언어에서의 if-else 문과 유사한 역할을 합니다.

기본 구조

CASE 
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ...
    ELSE 기본결과
END
  • CASE: 조건문을 시작합니다.
  • WHEN: 조건을 정의합니다.
  • THEN: 조건이 참일 때 반환할 값을 지정합니다.
  • ELSE: 모든 조건이 거짓일 때 반환할 기본값을 지정합니다 (선택적).
  • END: 조건문을 종료합니다.

사용 예시

1. 조건에 따라 값을 반환

예를 들어, 학생의 점수에 따라 학점을 부여한다고 할 때:

SELECT 
    학생이름,
    점수,
    CASE
        WHEN 점수 >= 90 THEN 'A'
        WHEN 점수 >= 80 THEN 'B'
        WHEN 점수 >= 70 THEN 'C'
        WHEN 점수 >= 60 THEN 'D'
        ELSE 'F'
    END AS 학점
FROM 학생;

위 SQL은 학생 점수에 따라 학점을 계산하여 결과를 반환합니다.

2. 특정 조건에 따라 계산

상품의 판매량에 따라 할인율을 계산한다고 할 때:

SELECT 
    상품명,
    판매량,
    CASE 
        WHEN 판매량 > 100 THEN 판매량 * 0.2  -- 판매량이 100개 이상일 때 20% 할인
        WHEN 판매량 > 50 THEN 판매량 * 0.1   -- 판매량이 50개 이상일 때 10% 할인
        ELSE 0                               -- 그 외에는 할인 없음
    END AS 할인금액
FROM 상품;

3. WHERE 절에서 사용

CASE WHENSELECT문뿐만 아니라 WHERE 절에서도 조건을 세부적으로 지정할 수 있습니다.

SELECT *
FROM 주문
WHERE 
    CASE 
        WHEN 회원등급 = 'VIP' THEN 주문금액 > 100000
        ELSE 주문금액 > 50000
    END;

VIP 회원의 경우 주문금액이 10만 원 이상인 경우만, 일반 회원은 5만 원 이상인 경우만 조회합니다.

주의점

  • CASE WHENELSE를 생략할 수 있지만, 모든 조건이 거짓일 때 NULL이 반환됩니다.
  • 조건은 위에서부터 차례대로 평가되며, 첫 번째로 참인 조건이 실행됩니다. 따라서 조건 순서를 신중히 설정해야 합니다.

 

 

 

 

 

 

반응형

댓글