SQL, CASE WHEN THEN 구문 사용법

case when then … SQL 문은 조건부 로직을 처리하기 위해 사용됩니다. 조건에 따라 결과를 다르게 반환할 수 있습니다.

CASE

기본 구조는 다음과 같습니다.

CASE
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ...
    ELSE 결과
END AS 컬럼명

WHEN으로 조건(WHEN)을 순차적으로 평가해서 참인 경우엔(THEN) 그에 맞는 결과를 반환합니다. 모든 조건이 거짓이면 ELSE 절의 결과를 반환합니다. ELSE 절은 옵션입니다. 생략할 수 있습니다. 만약 ELSE 절이 없고 모든 조건이 거짓이면 NULL을 반환합니다.

 

예시 1)

예를 들어, 제품 테이블에서 상품 가격에 따라 할인율 지정하고 그 값을 출력하고 싶다고 가정합니다. 이 경우 case 문을 이용해서 price 컬럼의 값이 1000 이상이면 discount_rate 컬럼에 '10% 할인'을, 500 이상이면 '5% 할인'을 조건에 부합하지 않으면 '할인 없음'을 반환합니다.

SELECT
    product_name,
    price,
    CASE
        WHEN price >= 1000 THEN '10% 할인'
        WHEN price >= 500 THEN '5% 할인'
        ELSE '할인 없음'
    END AS discount_rate
FROM products;

 

products 테이블

 

case when end as 구문으로 조건에 맞는 discount_rate 컬럼을 출력했다.

 

비슷한 방식으로 여러 예제를 보면 이해가 쉬우실 겁니다.

예시 2)

성적에 따른 학점 부여를 한다고 가정합니다. 점수별로 grade라는 컬럼에 A, B, C, D라는 값을 반환할 수 있습니다.

SELECT
    student_id,
    score,
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        WHEN score >= 60 THEN 'D'
        ELSE 'F'
    END AS grade
FROM exam_results;

 

예시 3)

연령별로 고객을 분류합니다.

SELECT
    customer_id,
    age,
    CASE
        WHEN age < 18 THEN '청소년'
        WHEN age >= 18 AND age < 35 THEN '청년'
        WHEN age >= 35 AND age < 65 THEN '중년'
        ELSE '노년'
    END AS age_group
FROM customers;

 

반응형

댓글

Designed by JB FACTORY