[SQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기(프로그래머스)

2024. 4. 30. 22:26코딩 테스트

문제

 

 

개념
  • 조건문
    • IF(조건문, 조건문이 참일 때 값, 조건문이 거짓일 때 값) 
    • CASE WHEN 조건문 THEN 조건문이 참일 때 값 ELSE 조건문이 거짓일 때 값 END
  • 조건문 뒤에 AS를 써서 조건문 값에 대한 컬럼을 생성
  • 각 자동차 ID에 따라 해당 날짜에 한 번이라도 대여중이었던적이 있는지를 알아보는 문제임을 유념
    • SUM(IF(조건문, 1, 0)) = 0 을 사용해서 한 번이라도 1(대여중)이 되는 조건을 확인하기
    • GROUP BY를 통해 각 자동차 ID에 따라 확인

 

 

정답
SELECT CAR_ID, 
    IF (SUM(IF('2022-10-16' BETWEEN START_DATE AND END_DATE, 1, 0)) = 0, '대여 가능','대여중')
    AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
GROUP BY CAR_ID
ORDER BY 1 DESC