본문 바로가기
Study/SQL

[MySQL] CASE문 (CASE WHEN THEN END)

by ngool 2024. 10. 10.

본 포스트는 MySQL에서 사용되는 CASE문의 사용법에 대해 정리한 것입니다.

 

CASE문은 SQL에서 조건에 따라 다른 값을 반환하고 싶을 때 사용됩니다.

보통 SELECT 문 안에서 주로 사용되고, WHERE, ORDER BY에서도 사용될 수 있습니다.

 

CASE문이 어떤 구조로 되어 있고, 어떻게 사용되는지 알아보겠습니다!


CASE문의 기본 구조

CASE
    WHEN 조건식1 THEN 결과값1
    WHEN 조건식2 THEN 결과값2
    ...
    ELSE 기본결과값
END
  • 주어진 조건식들을 순차적으로 평가한 후, 참인 첫 번째 조건의 결과값을 반환
  • 모든 조건이 거짓일 경우 ELSE로 지정한 기본결과값 반환 (ELSE가 없으면 NULL 반환)

CASE문 활용 예제

[SELECT문에서 활용]

SELECT student_name, 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 students;

=> score에 따라 각 학생의 등급 계산

 

[WHERE 절에서 활용]

SELECT *
FROM employees
WHERE
    CASE
        WHEN department = 'Sales' THEN salary > 50000
        WHEN department = 'HR' THEN salary > 40000
        ELSE salary > 30000
    END;

=> Sales 부서에서는 급여가 50,000 이상, HR 부서는 40,000 이상, 나머지 부서는 30,000 이상인 직원만 조회됨

 

[ORDER BY 절에서 활용]

SELECT product_name, price, category
FROM products
ORDER BY
    CASE
        WHEN category = 'Electronics' THEN price
        WHEN category = 'Books' THEN product_name
        ELSE category
    END;

=> category가 'Electronics'일 때는 price 순으로, 'Books'일 때는 product_name 순으로 정렬하고, 나머지는 category 순으로 정렬

 

[중첩 CASE문]

SELECT
    product_name,
    CASE
        WHEN category = 'Clothing' THEN
            CASE
                WHEN price > 100 THEN 'Premium'
                ELSE 'Standard'
            END
        ELSE 'Other'
    END AS product_type
FROM products;

=> Clothing 카테고리일 때 가격에 따라 'Premium'과 'Standard'로 나뉘고, 그 외의 경우 'Other'로 분류

'Study > SQL' 카테고리의 다른 글

[MySQL] SUBSTR 함수에 대하여  (0) 2024.11.05
[MySQL] 세션 변수 (@)  (0) 2024.10.23
[MySQL] UNION과 UNION ALL의 차이  (1) 2024.09.04
[MySQL] IFNULL과 NULLIF의 차이  (0) 2024.09.02