데이터 분석 기술 블로그

CASE - END 문 본문

SQL/개념

CASE - END 문

데이터분석가 이채은 2024. 11. 8. 17:20

CASE 문이란?

"CASE" 문은 조건에 따라 다른 값을 반환하거나, 특정 로직을 수행할 때 사용하는 제어 흐름 구문입니다. CASE는 SQL의 조건문(if-else)과 유사하며, SELECT, WHERE, ORDER BY, GROUP BY 등 다양한 구문에서 사용할 수 있습니다.


CASE 문 기본 구문

1. 단순 CASE 문 (Simple CASE Statement)

  • 특정 값과 비교하여 조건을 평가합니다.
CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

2. 검색 CASE 문 (Searched CASE Statement)

  • 조건식을 사용하여 조건을 평가합니다.
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

 

  • WHEN: 조건 또는 비교 대상.
  • THEN: 조건이 참일 때 반환할 값.
  • ELSE: 모든 조건이 거짓일 경우 반환할 기본값(생략 가능).
  • END: CASE 문 종료.

예제

SELECT employee_id,
       job_title,
       CASE job_title
           WHEN 'Manager' THEN 80000
           WHEN 'Developer' THEN 60000
           WHEN 'Analyst' THEN 50000
           ELSE 40000
       END AS salary
FROM Employees;


SELECT sales_id,
       total_sales,
       CASE
           WHEN total_sales >= 2000 THEN 'High'
           WHEN total_sales >= 1000 THEN 'Medium'
           ELSE 'Low'
       END AS sales_grade
FROM Sales;


활용 예제

1. SELECT 절에서 사용

SELECT employee_id,
       CASE 
           WHEN salary > 50000 THEN 'High Income'
           ELSE 'Low Income'
       END AS income_level
FROM Employees;

2. ORDER BY 절에서 사용

  • 조건에 따라 정렬 순서를 변경할 수 있습니다.
SELECT employee_id, job_title
FROM Employees
ORDER BY CASE
             WHEN job_title = 'Manager' THEN 1
             WHEN job_title = 'Developer' THEN 2
             ELSE 3
         END;

3. WHERE 절에서 사용

  • 특정 조건에 따라 데이터를 필터링합니다.
SELECT *
FROM Sales
WHERE CASE
          WHEN total_sales > 1000 THEN 1
          ELSE 0
      END = 1;

4. GROUP BY 절에서 사용

  • 특정 조건에 따라 데이터를 그룹화합니다.
SELECT 
    CASE 
        WHEN total_sales >= 2000 THEN 'High'
        ELSE 'Low'
    END AS sales_category,
    COUNT(*)
FROM Sales
GROUP BY CASE 
             WHEN total_sales >= 2000 THEN 'High'
             ELSE 'Low'
         END;

'SQL > 개념' 카테고리의 다른 글

SUBSTRING 함수  (0) 2024.11.10
COUNT 함수  (0) 2024.11.09
CONCAT 함수  (0) 2024.11.07
ROUND 함수  (0) 2024.11.06
VARIANCE 함수  (0) 2024.11.05