CASE WHEN 구문의 활용법 – 조건 분기와 표현식을 동시에 해결하는 방법
SQL에서 조건에 따라 다른 값을 출력해야 할 때 CASE WHEN
구문을 사용합니다. 이는 프로그래밍 언어에서의 if-else처럼 조건 분기를 처리할 수 있도록 도와주며, 특히 SELECT 문 안에서 동적으로 컬럼 값을 제어할 때 자주 사용됩니다.
CASE WHEN의 기본 구조
CASE 구문은 다음과 같은 형식으로 작성합니다.
SELECT 컬럼명,
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 기본값
END AS 별칭
FROM 테이블명;
조건이 참인 첫 번째 WHEN
절이 실행되고, 해당 조건이 모두 거짓인 경우 ELSE
절의 값이 반환됩니다.
실무 예시: 고객 등급 분류
예를 들어, 고객의 구매 금액을 기준으로 등급을 나누는 쿼리는 다음과 같습니다.
SELECT 고객명,
구매금액,
CASE
WHEN 구매금액 >= 100000 THEN 'VIP'
WHEN 구매금액 >= 50000 THEN '우수'
ELSE '일반'
END AS 고객등급
FROM 고객테이블;
이 쿼리를 사용하면 금액에 따라 각 고객이 어떤 등급인지 자동으로 분류할 수 있습니다.
GROUP BY, ORDER BY와 함께 사용
CASE 문은 GROUP BY
나 ORDER BY
와 함께 쓰일 때도 강력한 유연성을 발휘합니다. 예를 들어, 지역별로 '수도권'과 '비수도권'을 나눠 집계하고 싶을 때는 다음과 같이 활용합니다.
SELECT
CASE
WHEN 지역 IN ('서울', '경기', '인천') THEN '수도권'
ELSE '비수도권'
END AS 권역,
COUNT(*) AS 고객수
FROM 고객테이블
GROUP BY
CASE
WHEN 지역 IN ('서울', '경기', '인천') THEN '수도권'
ELSE '비수도권'
END;
주의할 점
CASE
구문은WHERE
절에서 직접 사용할 수 없습니다. 조건 분기가 필요한 경우엔 서브쿼리나 CTE(Common Table Expression)로 처리하는 것이 일반적입니다.- 조건 순서가 중요합니다. 먼저 작성된
WHEN
조건부터 평가되므로, 조건이 중첩될 수 있는 경우에는 우선순위를 고려해야 합니다.
마무리
CASE WHEN
구문은 SQL에서 데이터를 조건에 따라 분기해 보여줄 때 매우 유용한 도구입니다. 특히 복잡한 조건을 단일 컬럼 안에서 처리할 수 있어 가독성과 유지보수 측면에서도 장점이 많습니다. 실무에서도 흔히 사용되는 만큼, 다양한 상황에 적용해보며 익숙해지는 것이 중요합니다.
#SQL #CASE문 #조건분기 #SQL기초 #WHENTHEN #쿼리작성팁 #SELECT문 #데이터분석
'SQL 기초 정리' 카테고리의 다른 글
LIKE 연산자의 와일드카드(%, _) 정확히 알고 쓰기 (0) | 2025.04.12 |
---|---|
CTE(Common Table Expressions)의 활용법 – 서브쿼리보다 명확한 쿼리 작성 (0) | 2025.04.12 |
COUNT(*)와 COUNT(컬럼명)의 차이 – 결과는 비슷해도 의미는 다르다 (0) | 2025.04.11 |
JOIN 없이도 가능하다? SQL에서 서브쿼리로 해결하는 3가지 실무 상황 (0) | 2025.04.11 |
DISTINCT vs GROUP BY – 결과는 같아도 목적은 다르다 (0) | 2025.04.11 |