HIT해

[SQL] CASE 문 본문

자격증 공부/SQLD

[SQL] CASE 문

힛해 2024. 11. 2. 05:48
728x90

CASE WHEN THEN END ( 조건문 )

1. CASE 문 개요

CASE 문은 SQL에서 조건부 처리를 위해 사용되는 구문입니다. 이는 프로그래밍 언어의 if-then-else 문과 유사한 기능을 합니다.

2. CASE 문 문법

CASE 문에는 두 가지 기본 형식이 있습니다:

2.1 단순 CASE 문

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    [ELSE else_result]
END

2.2 검색 CASE 문

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    [ELSE else_result]
END

3. CASE 문 사용 예시

3.1 단순 CASE 문 예시

SELECT
    product_name,
    price,
    CASE category
        WHEN 'Electronics' THEN 'High-tech item'
        WHEN 'Clothing' THEN 'Fashion item'
        WHEN 'Food' THEN 'Grocery item'
        ELSE 'Other item'
    END AS product_type
FROM
    products;

이 쿼리는 제품의 카테고리에 따라 제품 유형을 분류합니다.

3.2 검색 CASE 문 예시

SELECT
    employee_name,
    salary,
    CASE
        WHEN salary < 30000 THEN 'Low'
        WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium'
        WHEN salary > 50000 THEN 'High'
    END AS salary_category
FROM
    employees;

이 쿼리는 직원의 급여 수준에 따라 카테고리를 지정합니다.

3.3 집계 함수와 함께 사용하는 예시

SELECT
    department,
    COUNT(*) AS total_employees,
    SUM(CASE WHEN performance_rating > 8 THEN 1 ELSE 0 END) AS high_performers
FROM
    employees
GROUP BY
    department;

이 쿼리는 각 부서별 총 직원 수와 고성과자(성과 평가 8점 초과) 수를 계산합니다.

3.4 UPDATE 문에서 사용하는 예시

UPDATE products
SET price =
    CASE
        WHEN stock_quantity > 100 THEN price * 0.9
        WHEN stock_quantity <= 20 THEN price * 1.1
        ELSE price
    END;

 

이 쿼리는 재고 수량에 따라 제품 가격을 조정합니다.

4. CASE 문 사용 시 주의사항

  1. ELSE 절을 생략하면 조건에 맞지 않는 경우 NULL이 반환됩니다.
  2. CASE 문은 첫 번째로 TRUE가 되는 조건에서 멈춥니다.
  3. CASE 문의 모든 반환 값은 같은 데이터 타입이어야 합니다.

5. CASE 문의 장점

  1. 가독성: 복잡한 조건부 로직을 명확하게 표현할 수 있습니다.
  2. 유연성: SELECT, WHERE, ORDER BY 등 다양한 SQL 구문에서 사용할 수 있습니다.
  3. 성능: 적절히 사용하면 복잡한 조건부 로직을 효율적으로 처리할 수 있습니다.