ABOUT ME

Today
Yesterday
Total
  • MySql - Case문 간단정리
    DataBase/MySql 2024. 8. 5. 22:58
    반응형

    CASE문 개요

    MySQL의 CASE문은 SQL 표준의 일부로, 조건에 따라 서로 다른 값을 반환할 수 있는 제어 흐름 함수입니다. CASE문은 주로 SELECT, UPDATE, DELETE 쿼리에서 사용되며, 복잡한 조건 논리를 단순화할 수 있습니다.

     

    CASE문의 기본 문법

    CASE
        WHEN 조건1 THEN 결과1
        WHEN 조건2 THEN 결과2
        ...
        ELSE 결과N
    END

     

    각 조건이 참이면 해당 조건에 해당하는 결과가 반환되며, 조건이 모두 거짓이면 ELSE 절의 결과가 반환됩니다. ELSE 절은 선택 사항이며, 생략할 경우 조건이 모두 거짓일 때 NULL을 반환합니다.

    CASE문의 사용 예시

    예시 1: 단순 CASE문

    다음은 학생의 성적에 따라 등급을 매기는 예제입니다.

    SELECT 학생이름,
           성적,
           CASE
               WHEN 성적 >= 90 THEN 'A'
               WHEN 성적 >= 80 THEN 'B'
               WHEN 성적 >= 70 THEN 'C'
               WHEN 성적 >= 60 THEN 'D'
               ELSE 'F'
           END AS 등급
    FROM 성적표;

    위 쿼리는 성적표 테이블에서 각 학생의 성적에 따라 등급을 부여합니다. 성적이 90점 이상이면 'A', 80점 이상이면 'B', 70점 이상이면 'C', 60점 이상이면 'D', 그 외는 'F'로 등급이 매겨집니다.

     

    예시 2: 복합 CASE문

    다음은 직원의 부서와 근속 연수에 따라 보너스를 계산하는 예제입니다.

    SELECT 직원이름,
           부서,
           근속연수,
           CASE
               WHEN 부서 = '영업' AND 근속연수 >= 5 THEN 1000
               WHEN 부서 = '영업' AND 근속연수 < 5 THEN 500
               WHEN 부서 = '개발' AND 근속연수 >= 3 THEN 800
               ELSE 300
           END AS 보너스
    FROM 직원정보;

    이 쿼리는 직원정보 테이블에서 각 직원의 부서와 근속 연수를 기준으로 보너스를 계산합니다. 영업 부서에 속하면서 근속 연수가 5년 이상인 경우 1000, 5년 미만인 경우 500, 개발 부서에 속하면서 근속 연수가 3년 이상인 경우 800, 그 외의 경우 300의 보너스를 지급합니다.

     

     

    CASE문을 활용한 복잡한 조건 처리

    CASE문은 단순한 조건 외에도 복잡한 논리를 처리하는 데 유용합니다. 예를 들어, 특정 조건에 따라 다른 쿼리를 실행해야 하는 경우에도 사용할 수 있습니다.

    예시 3: 여러 조건을 포함한 CASE문

    SELECT 제품명,
           가격,
           재고수량,
           CASE
               WHEN 가격 > 100000 AND 재고수량 > 50 THEN '고가&대량'
               WHEN 가격 > 100000 AND 재고수량 <= 50 THEN '고가&소량'
               WHEN 가격 <= 100000 AND 재고수량 > 50 THEN '저가&대량'
               ELSE '저가&소량'
           END AS 제품분류
    FROM 제품목록;

    이 쿼리는 제품목록 테이블에서 각 제품의 가격과 재고 수량에 따라 제품을 분류합니다. 가격이 100,000원 이상이고 재고 수량이 50개 이상이면 '고가&대량', 50개 이하이면 '고가&소량', 가격이 100,000원 이하이고 재고 수량이 50개 이상이면 '저가&대량', 그 외는 '저가&소량'으로 분류됩니다.

    반응형

    댓글

Designed by Tistory.