[MYSQL] 조건문 - IF문 (프로그래머스_자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기)

2023. 4. 23. 16:09개발공부 기강잡자/SQL

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

SELECT CAR_ID, IF(CAR_ID IN (SELECT CAR_ID
                     FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                     WHERE (start_date <= '2022-10-16' AND end_date >= '2022-10-16'))
    , '대여중', '대여 가능') AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

우선 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블을 CAR_ID로 GROUP BY 한 다음에,

서브쿼리를 사용하여 각 CAR_ID가 (대여기간이 2022-10-16에 속하는 CAR_ID를  SELECT) 한 결과에 속하는지 IF 문으로 확인했다.

 

 

 


IF문

SELECT IF(조건문, 참일 경우 반환값, 거짓일 경우 반환값)

👉 조건문에 따라 반환 값을 설정할 수 있다.

 

ELSE IF와 ELSE 도 사용가능

IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF

 참고 : https://dev.mysql.com/doc/refman/8.0/en/if.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.6.5.2 IF Statement

IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF The IF statement for stored programs implements a basic conditional construct. Note There is also an IF() function, which differs from th

dev.mysql.com

 

CASE WHEN

SELECT CASE WHEN 조건문 THEN 반환값
            WHEN 조건문 THEN 반환값
            ELSE 조건문에 해당되지 않는 경우 반환값
        END

참고 : https://dev.mysql.com/doc/refman/8.0/en/case.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.6.5.1 CASE Statement

CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE Or: CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE T

dev.mysql.com