본 포스트는 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 |