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
반응형
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] - 있었는데요 없었습니다 (0) | 2024.10.25 |
---|---|
[MySQL] - 오랜 기간 보호한 동물(2) (2) | 2024.10.18 |
[MySQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.10.12 |
[MySQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.10.09 |
[MySQL] 대장균의 크기에 따라 분류하기 1 (0) | 2024.10.09 |