Welcome! Everything is fine.

[프로그래머스/Lv.3] 대여 기록이 존재하는 자동차 리스트 구하기 - MySQL 본문

프로그래머스/SQL

[프로그래머스/Lv.3] 대여 기록이 존재하는 자동차 리스트 구하기 - MySQL

개발곰발 2024. 3. 21.
728x90

📌 문제

 

프로그래머스

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

programmers.co.kr

📌 정답

나는 아래와 같이 JOIN을 한 후 LIKE를 이용해  10월에 대여를 시작한 기록이 있는 자동차를 조회하였다.

SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_CAR JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY USING(CAR_ID)
WHERE CAR_TYPE = '세단' AND START_DATE LIKE '%10-%'
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

 

다른 답안을 보니 JOIN을 사용하지 않고 IN을 사용해 이중쿼리를 짜거나, MONTH(START_DATE) = 10 와 같이 LIKE를 사용하지 않고 조건을 충족시키는 방법이 있었다.

SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_ID IN (SELECT CAR_ID
                 FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                 WHERE MONTH(START_DATE) = 10) AND CAR_TYPE = '세단'
ORDER BY CAR_ID DESC

📌 기억할 것

  • 날짜와 시간을 추출할 수 있는 함수들이 많다.
    • 연도 추출 - YEAR()
    • 월 추출 - MONTH()
    • 일 추출 - DAYOFMONTH  
    • 날짜 A에서 날짜 B를 빼기 - DATEDIFF(A, B) 
    • 오늘 날짜 추출 - CURDATE()