코딩테스트
프로그래머스 대여 기록이 존재하는 자동차 리스트 구하기
코드 죄수
2023. 9. 5. 10:09
문제가 원하는 것을 정리하면
1. 자동차 종류가 "세단"이어야 하며
2. 10월에 대여를 시작한 기록이 있는차
3. 자동차 ID 중복을 제거한다.
위 테이블을 보고 하나씩 해결하도록 하겠다.
먼저 1. 자동차 종류가 "세단"을 찾는 sql은 WHERE절을 사용하면 찾을 수 있을 것이다.
WHERE A.CAR_TYPE = '세단'
그다음 2. 10월에 대여를 시작한 기록이 있는차를 알기 위해서는 역시 WHERE절을 사용하면 되는데 먼저 서로다른 테이블을 같이 조회해야 하기 때문에 JOIN을 사용하는데 두테이블에 데이터가 모두 존재하는 데이터 임으로 INNER JOIN을 사용하여 조회 하며, 두 테이블의 공유값인 CAR_ID를 사용하여 JOIN하면 된다.
FROM CAR_RENTAL_COMPANY_CAR A INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B ON A.CAR_ID = B.CAR_ID
WHERE B.START_DATE BETWEEN '2022-10-01' AND '2022-10-31'
마지막으로 3. 자동차 ID 중복을 제거하는것은 SELECT 문에 DISTINCT를 사용하면 중복을 제거한 데이터 행들을 추출해준다.
SELECT DISTINCT A.CAR_ID
이를 합치면
SELECT DISTINCT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR A INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B ON A.CAR_ID = B.CAR_ID
WHERE A.CAR_TYPE = '세단' AND B.START_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY A.CAR_ID DESC;
위 와 같은 sql문이 만들어 질것이다.