less than 1 minute read

📜문제


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

image

📜정답


    SELECT CAR_ID,
        MAX(CASE
          WHEN '2022-10-16' BETWEEN START_DATE AND END_DATE
          THEN '대여중'
          ELSE '대여 가능'
        END) AS AVAILABILITY 
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
    GROUP BY CAR_ID
    ORDER BY CAR_ID DESC

📜노트


  • MAX

가장 큰 값을 조회할 때 사용한다. 그러나 해당 문제에서는 CAR_ID별로 여러개의 상태가 있다. 그러나 '대여중'이 하나라도 있다면 대여를 할 수 없는 상태이기 때문에 '대여중'으로 나타내야 한다.
‘대여 가능’보다 ‘대여중’이 문자열 상으로 크기 때문에 MAX함수를 사용한다.

  • BETWEEN A AND B

A이상 B이하의 값을 조회한다.

  • CASE WHEN
CASE WHEN 조건1 THEN '반환값'
     WHEN 조건2 THEN '반환값'
     .
     .
     ELSE '반환값'
END

조건문이며 IF문과 달리 조건을 여러 개 걸 수 있다는 차이가 있다.