https://school.programmers.co.kr/learn/courses/30/lessons/157341
[문제]
다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다.
CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며,
CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.
Column name | Type | Nullable |
CAR_ID | INTEGER | FALSE |
CAR_TYPE | VARCHAR(255) | FALSE |
DAILY_FEE | INTEGER | FALSE |
OPTIONS | VARCHAR(255) | FALSE |
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.
Column name | Type | Nullable |
HISTORY_ID | INTEGER | FALSE |
CAR_ID | INTEGER | FALSE |
START_DATE | DATE | FALSE |
END_DATE | DATE | FALSE |
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.
[코드]
SELECT DISTINCT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR AS A
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS B
ON A.CAR_ID = B.CAR_ID
WHERE MONTH(B.START_DATE) = 10 AND A.CAR_TYPE = '세단'
ORDER BY A.CAR_ID DESC;
[코드 2]
SELECT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR AS A
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS B
ON A.CAR_ID = B.CAR_ID
WHERE B.START_DATE LIKE '2022-10%' AND A.CAR_TYPE LIKE '세단'
GROUP BY A.CAR_ID
ORDER BY CAR_ID DESC;
[고찰]
이번 문제는 큰 어려움 없이 문제에 주어진 조건을 모두 작성하기만 하면 정답이었다. 이때, CAR_ID의 중복을 없애기 위해 DISTINCT 명령어를 속성 앞에 적어주거나 CAR_ID 별로 그룹을 묶어 중복을 없애 줄 수도 있었다.
'SQL 문제' 카테고리의 다른 글
[프로그래머스_SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.10.20 |
---|---|
[HackerRack] Placements (0) | 2023.10.17 |
[HackerRank] The Report (0) | 2023.10.16 |
[HackerRank] Weather Observation Station 18 (0) | 2023.10.16 |
[HackerRank] Contest Leaderboard (0) | 2023.10.16 |