본문 바로가기
DB/MySQL

[Mysql] 조건문 CASE~ WHEN~ THEN~ 알아보기

by 애기 개발자 2023. 9. 15.
반응형

case, when, then, else, end

이 5가지 순서로 기억하면 된다.

 

CASE
    WHEN <조건1> THEN '조건1 반환 값'
    WHEN <조건2> THEN '조건2 반환 값'
    ...
    ELSE '위의 조건에 없을 때 반환 값'
END AS '별칭'

위처럼 사용된다.

 

SELECT NAME, SEX, COUNTRY,
CASE 
    WHEN (AGE >= 19) THEN '성인'
    WHEN (AGE >= 13) THEN '청소년'
    ELSE '어린이' 
    END AS 구분 
FROM COUNTRY = 'KOREA'

위와 같은 쿼리문을 예시로 들자면

 

19세 이상은 성인

13~18세는 청소년

그 외에는 어린이로 표현하며

컬럼 명은 '구분'으로 설정하였다.

 

   

실제 사용 예시를 보여주자면

 

https://school.programmers.co.kr/learn/courses/30/lessons/151138

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

프로그래머스의 '자동차 대여 기록에서 장기/단기 대여 구분하기' 문제이다.

 

SELECT HISTORY_ID, CAR_ID, 
       DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE, 
       DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE 
    WHEN (TIMESTAMPDIFF(DAY, START_DATE, END_DATE)+1 >= 30) THEN '장기 대여' 
    ELSE '단기 대여' 
    END AS RENT_TYPE 
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE DATE_FORMAT(START_DATE, '%Y-%m') = '2022-09'
ORDER BY HISTORY_ID DESC

시간을 계산하여 30일 이상인 대여는 '장기 대여'

그 외는 '단기 대여' 로 표기하며

별칭은 'RENT_TYPE'으로 표기하여 푸는 것을 볼 수 있다.

반응형

댓글