SQL에서는 데이터를 조회할 때 단순히 값을 가져오는 것뿐 아니라, 조건에 따라 다른 결과를 보여주고 싶을 때가 많습니다.
이럴 때 사용하는 것이 바로 CASE문입니다.
CASE문 기본 구조
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 결과3
END
- WHEN: 조건식
- THEN: 조건이 참일 때 반환할 값
- ELSE: 위 조건들에 해당하지 않을 때 반환할 값 (생략 가능)
예제 쿼리
아래는 회원 테이블에서 키와 몸무게를 합쳐 보여주고, BMI 지수를 계산한 뒤, 그 값에 따라 비만 여부를 분류하는 SQL입니다.
SELECT
email,
CONCAT(height, 'cm', ', ', weight, 'kg') AS '키와 몸무게',
weight / ((height/100) * (height/100)) AS BMI,
CASE
WHEN weight IS NULL OR height IS NULL THEN '비만 여부 알 수 없음'
WHEN weight / ((height/100) * (height/100)) >= 25 THEN '과체중 또는 비만'
WHEN weight / ((height/100) * (height/100)) >= 18.5
AND weight / ((height/100) * (height/100)) < 25
THEN '정상'
ELSE '저체중'
END AS 'C_BMI'
FROM copang_main.member;
실행 결과 해석
- 키와 몸무게 → CONCAT() 함수를 사용해 "170cm, 65kg" 형태로 보기 좋게 표시.
- BMI → weight ÷ (height/100)² 공식으로 계산.
- C_BMI (CASE문 결과):
- 키 또는 몸무게가 NULL이면 "비만 여부 알 수 없음"
- BMI ≥ 25 → "과체중 또는 비만"
- 18.5 ≤ BMI < 25 → "정상"
- 그 외 → "저체중"
정리
- CASE문은 SQL에서 조건 분기를 할 수 있는 강력한 도구.
- WHEN ~ THEN ~ 구문을 통해 조건별로 다른 값을 반환 가능.
- 실무에서는 데이터 그룹화, 카테고리 분류, 사용자 친화적 출력 등에 자주 활용됨.
이번 예제처럼 BMI 계산 결과를 CASE문으로 구간별 분류하면, 데이터를 훨씬 직관적으로 분석할 수 있습니다.
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL SUBSTRING 함수로 데이터 가공하기 (1) | 2025.08.17 |
|---|---|
| MySQL CASE 문 실행 순서 이해하기 (1) | 2025.08.17 |
| MySQL CONCAT 함수 사용하기 (0) | 2025.08.17 |
| MySQL COALESCE 함수 사용하기 (0) | 2025.08.17 |
| MySQL CAST() 함수 – 데이터 타입 변환하기 (2) | 2025.08.17 |