반응형
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
프로그래머스의 '자동차 대여 기록에서 장기/단기 대여 구분하기' 문제이다.
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'으로 표기하여 푸는 것을 볼 수 있다.
반응형
'DB > MySQL' 카테고리의 다른 글
[Mysql] 프로그래머스 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.09.19 |
---|---|
[Mysql] 별칭(alias) 정렬 (0) | 2023.09.15 |
Join 알아보기 (0) | 2023.09.12 |
[MYSQL] 날짜 관련 알아보기 (0) | 2023.09.12 |
[MySQL] 서브쿼리 (0) | 2022.10.03 |
댓글