🐬 MySQL/MySQL 키워드

SQL CASE 문 마스터하기 : 강력한 조건부 표현식

itstory(Booho) 2024. 12. 1. 22:03
728x90

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 구문 작성 시 필수 요건

  1. CASE 키워드로 시작해야 합니다.
  2. END 키워드로 끝나야 합니다.
  3. 최소한 하나의 WHEN ... THEN 절이 있어야 합니다.
  4. ELSE 절은 선택사항이지만, 없으면 조건에 맞지 않는 경우 NULL을 반환합니다.
  5. 각 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 쿼리 내에서 직접 구현할 수 있어, 데이터 분석과 보고서 생성 작업을 훨씬 효율적으로 수행할 수 있습니다.

728x90
반응형