푼 날짜 : 2024.11.02
푼 문제 : 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
사용한 언어 : MYSQL
코드 :
SELECT CAR_ID,
CASE
WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) = 1 THEN '대여중'
ELSE '대여 가능'
END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
풀이 방식 :
시작 날짜(START_DATE) 또는 종료 날짜(END_DATE)에 2022-10-16에 포함되어 있어야한다.
그리고 그렇다면 '대여 가능' 아니라면 '대여중'을 출력해야한다.
SELECT CAR_ID,
CASE
WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) = 1
THEN '대여중'
ELSE '대여 가능'
END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
CAR_ID 가 동일한 컬럼이 여러개 있으므로 일단 GROUP BY로 묶어줬다.
정렬도 CAR_ID 기준 내림차순이므로 다음과 같이 작성했다.
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
MySQL | CASE WHEN THEN ELSE END
조건에 따라 행위가 달라지므로 조건문을 사용해야했다.
이때 사용되는 것이 바로 CASE WHEN~ THEN~ ELSE~ END 이다.
바로 예시를 살펴보자.
SELECT
CASE
WHEN(조건1) THEN 조건1을 만족했을 때의 값
WHEN(조건2) THEN 조건2을 만족했을 때의 값
WHEN(조건3) THEN 조건3을 만족했을 때의 값
ELSE 위 조건에 다 만족하지 않을 때의 값
END AS 새로운컬럼명
FROM TABLE명
마지막에 END로 끝낸 후 만약 새로운 컬럼명이 필요하다면 'as 새로운컬럼명'을 통해 지정할 수 있다.
자주 사용하는 문법이니 꼭 기억해놓도록 하자!
'Programming > SQL' 카테고리의 다른 글
[프로그래머스/SQL] / 카테고리 별 도서 판매량 집계하기 (0) | 2024.10.30 |
---|---|
[프로그래머스/SQL] / 날짜비교 with 진료과별 총 예약 횟수 출력하기 (0) | 2024.10.17 |
[프로그래머스/SQL] / SUBSTRING with 카테고리 별 상품 개수 구하기 (0) | 2024.10.17 |
[프로그래머스/SQL] / 컬럼별칭 with 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (1) | 2024.09.04 |