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;