1. SELECT WHEN 이란?
- SQL 기본 문법 중 하나로 select 절에서 사용한다.
- 개발자한테 좀더 와 닿게 설명하면 열을 if 문처럼 경우에 따라 조건을 설정하는 것이다.
- 두가지의 사용 방법이 존재한다.
2. 실제 예시
- 1번 과 같은경우는 쉽게 이해할수 있어서 생략
이에 대한 예시로 프로그래머스에서 내용을 참조해왔다.
다음과 같은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블이 있을경우
HISTORY_ID
|
CAR_ID
|
START_DATE
|
END_DATE
|
1
|
4
|
2022-09-27
|
2022-11-27
|
2
|
3
|
2022-10-03
|
2022-11-04
|
3
|
2
|
2022-09-05
|
2022-09-05
|
4
|
1
|
2022-09-01
|
2022-09-30
|
5
|
3
|
2022-09-16
|
2022-10-15
|
- START_DATE와 END_DATE 의 차이가 30일 이상인 경우 RENT_TYPE 라는 속성을 만들어 장기 대여 라고 한고 작을경우는 단기 대여라고 하고 싶다.
HISTORY_ID
|
CAR_ID
|
START_DATE
|
END_DATE
|
RENT_TYPE
|
5
|
3
|
2022-09-16
|
2022-10-13
|
단기 대여
|
4
|
1
|
2022-09-01
|
2022-09-30
|
장기 대여
|
3
|
2
|
2022-09-05
|
2022-09-05
|
단기 대여
|
1
|
4
|
2022-09-27
|
2022-10-26
|
장기 대여
|
Copy
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT (START_DATE,'%Y-%m-%d') AS CAR_ID,
DATE_FORMAT(END_DATE,'%Y-%m-%d') AS END_DATE,
CASE WHEN DATEDIFF(END_DATE, START_DATE) < 29
then '단기 대여'
ELSE '장기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
- 고려해볼수있는 예시들
- 연령 층 (10대, 20대, 30대)
- 갯수의 범위 (100단위, 200 단위, 300 단위)
- 점수에다른 성적및 등급 (A, B, C)
- 해당 년도 가입자수 (2020년도 가입자 수 ,2021년도 가입자수, 2022년도 가입자수 )
- 등등
- 상황에따라 무궁무진 하게 사용할수있다.