SQL CASE 문 마스터하기 : 강력한 조건부 표현식
2024.12.01 - [데이터베이스/MySQL 실습문제] - LIKE , LIMIT, DISTINCT, CASE문키워드를 이용한 연습문제 각각 5개씩
LIKE , LIMIT, DISTINCT, CASE문키워드를 이용한 연습문제 각각 5개씩
문제풀이용 데이터베이스 SQL파일 다운로드 LIKE 예습 문제특정 도메인을 가진 이메일 검색이메일이 example.com 도메인으로 끝나는 직원들의 정보를 출력하는 SQL 문을 작성하세요.더보기SELECT * FROM
boohoday.com
SQL CASE: 조건부 로직의 마법사
안녕하세요, SQL 학습자 여러분! 오늘은 SQL의 강력한 기능 중 하나인 CASE 문에 대해 알아보겠습니다.
CASE 문은 조 건부 로직을 SQL 쿼리 내에서 구현할 수 있게 해주는 유용한 도구입니다.
CASE 문이란?
CASE 문은 SQL에서 조건에 따라 다른 결과를 반환하는 표현식입니다.
프로그래밍 언어의 if-else 문과 유사한 역할을 합니다.
CASE 문의 기본 구조
CASE 문은 두 가지 형태로 사용할 수 있습니다.
단순 CASE 문
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
검색 CASE 문
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
CASE 구문 작성 시 필수 요건
- CASE 키워드로 시작해야 합니다.
- END 키워드로 끝나야 합니다.
- 최소한 하나의 WHEN ... THEN 절이 있어야 합니다.
- ELSE 절은 선택사항이지만, 없으면 조건에 맞지 않는 경우 NULL을 반환합니다.
- 각 WHEN 절 뒤에는 반드시 THEN 절이 와야 합니다.
CASE 문 사용 예시
성적 등급 매기기
SELECT
student_name,
score,
CASE
WHEN score >= 90 THEN 'A' 90점 이상은 'A'
WHEN score >= 80 THEN 'B' 80점 이상은 'B'
WHEN score >= 70 THEN 'C' 70점 이상은 'C'
ELSE 'D' 그 외는 'D'
END AS grade
FROM students;
학생들의 점수에 따라 등급을 부여합니다.
부서별 보너스 계산
SELECT
employee_name,
department,
salary,
CASE department
WHEN 'IT' THEN salary * 0.10 IT 부서는 급여의 10%
WHEN 'Sales' THEN salary * 0.15 Sales 부서는 15%
WHEN 'HR' THEN salary * 0.05 HR 부서는 5%
ELSE salary * 0.03 그 외 부서는 3%
END AS bonus
FROM employees;
직원들의 부서에 따라 다른 비율로 보너스를 계산
CASE 문의 고급 활용
집계 함수와 함께 사용
SELECT
department,
SUM(CASE WHEN performance_rating > 8 THEN 1 ELSE 0 END) AS high_performers
FROM employees
GROUP BY department;
각 부서별로 높은 성과를 보인 직원(성과 평가 8점 초과)의 수를 계산합니다.
CASE 문을 SUM 함수와 함께 사용하여 조건에 맞는 직원 수를 집계합니다.
ORDER BY 절에서 사용
SELECT product_name, category, price
FROM products
ORDER BY
CASE
WHEN category = 'Electronics' THEN price
ELSE product_name
END;
제품을 정렬할 때 'Electronics' 카테고리의 제품은 가격 순으로, 그 외 제품은 이름 순으로 정렬합니다.
CASE 문을 ORDER BY 절에 사용하여 복잡한 정렬 로직을 구현할 수 있습니다.
CASE 문은 SQL에서 조건부 로직을 구현하는 강력한 도구입니다.
데이터 변환, 조건부 집계, 동적 정렬 등 다양한 상황에서 활용할 수 있습니다.
복잡한 비즈니스 로직을 SQL 쿼리 내에서 직접 구현할 수 있어, 데이터 분석과 보고서 생성 작업을 훨씬 효율적으로 수행할 수 있습니다.