코딩테스트/SQL

[MySQL] - 대여 기록이 존재하는 자동차 리스트 구하기

rlatotquf45 2024. 10. 18. 21:43
728x90
반응형

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

문제 요약

주어진 문제는 두 개의 테이블(CAR_RENTAL_COMPANY_CAR, CAR_RENTAL_COMPANY_RENTAL_HISTORY)을 이용하여 '세단' 종류의 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID를 중복 없이 출력하는 문제입니다. 자동차 ID는 내림차순으로 정렬해야 합니다.

풀이 방법

 

  • 테이블 조인: 자동차 대여 기록(CAR_RENTAL_COMPANY_RENTAL_HISTORY)과 자동차 정보(CAR_RENTAL_COMPANY_CAR) 테이블을 CAR_ID를 기준으로 조인해야 합니다. 이는 자동차의 종류와 대여 기록을 함께 가져오기 위함입니다.
  • 조건 필터링: 조인한 결과에서 자동차 종류가 '세단'이고, START_DATE가 10월에 속하는지 확인해야 합니다. MONTH(START_DATE) = 10을 이용하여 10월에 해당하는 기록만 필터링할 수 있습니다.
  • 중복 제거: DISTINCT 키워드를 사용하여 중복된 자동차 ID를 제거합니다. 동일한 자동차가 여러 번 대여되었더라도, 하나의 자동차 ID만 출력되어야 합니다.
  • 내림차순 정렬: 최종적으로 자동차 ID를 내림차순(ORDER BY CAR_ID DESC)으로 정렬합니다.

 

정답 코드

-- 코드를 입력하세요
SELECT distinct(c.car_id)
from CAR_RENTAL_COMPANY_CAR as c
join CAR_RENTAL_COMPANY_RENTAL_HISTORY as r
on c.car_id = r.car_id
where c.car_type = '세단' and r.start_date like '2022-10%' 
order by c.car_id desc

새롭게 배운 내용

DISTINCT 함수

  • DISTINCT는 SQL에서 중복된 값을 제거할 때 사용하는 함수입니다. 여러 줄에서 동일한 값이 나올 경우, 중복을 제외한 유일한 값들만 결과로 반환합니다.
  • 이번 문제에서 DISTINCT는 동일한 자동차가 10월에 여러 번 대여된 경우 중복된 자동차 ID를 제거하기 위해 사용됩니다.
728x90
반응형