몸과 마음이 건전한 SW 개발자

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

SQL/String, Date

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

스위태니 2024. 12. 27. 13:58

문제 링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

정답 코드

SELECT CRCRH.CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY CRCRH
JOIN CAR_RENTAL_COMPANY_CAR CRCC
ON CRCRH.CAR_ID = CRCC.CAR_ID 
    AND CRCRH.START_DATE BETWEEN '2022-10-01' AND '2022-10-31' 
    AND CRCC.CAR_TYPE = '세단'
GROUP BY CRCRH.CAR_ID
ORDER BY CRCRH.CAR_ID DESC;

풀이 과정

  1. CAR_RENTAL_COMPANY_RENTAL_HISTORY (CRCRH)와 CAR_RENTAL_COMPANY_CAR (CRCC)를 CAR_ID를 기준으로 조인한다.
    • ON 조건을 만족하는 데이터만 결합되며, CRCRH.CAR_ID = CRCC.CAR_ID 조건이 적용된다.
  2. 조인된 데이터에서 WHERE 조건에 따라 필터링한다.
    • 조건은 CRCRH.START_DATE가 2022-10-01에서 2022-10-31 사이에 포함되고, CRCC.CAR_TYPE이 '세단'인 경우다.
  3. 필터링된 데이터를 GROUP BY CRCRH.CAR_ID로 그룹화하여 중복된 차량 ID를 제거한다.
  4. 그룹화된 데이터에서 SELECT 문을 통해 CAR_ID를 선택한다.
  5. 마지막으로 ORDER BY CRCRH.CAR_ID DESC를 적용하여 차량 ID를 내림차순으로 정렬하고 결과를 출력한다.
 

느낀점

  • JOIN을 할 때 INNER JOIN으로 조건을 모두 만족하는 경우만 출력하게 했으며 CAR_ID를 그룹화 시켜서 중복을 제거했다.
  • 한번에 풀려서 다행이라고 느끼면서도 항상 실수하지 않도록 꼼꼼히 풀어 보자.