문제 :
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.
해결 방식 :
-- 자동차 id 리스트(NO중복) >> GROUP BY
-- 자동차 종류가 '세단'인 자동차 >> WHERE = '세단'
-- 10월에 대여 시작한 기록 >> WHERE MONTH = 10
-- CAR_ID 내림차순
결과 : 정답
답안 :
SELECT CH.CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY AS CH
LEFT JOIN CAR_RENTAL_COMPANY_CAR AS CC ON CH.CAR_ID = CC.CAR_ID
WHERE MONTH(CH.START_DATE) = 10
AND CC.CAR_TYPE = '세단'
GROUP BY 1
ORDER BY 1 DESC
다른 풀이법 :
1. 세단 찾기
- CAR_TYPE IN ('세단')
- SELECT DISTINCT(CC.CAR_ID)
2. 10월
- DATE_FORMAT(START_DATE, '%Y-%m-%d') like '2022-10%'
- START_DATE LIKE '2022-10%'
인사이트 :
날짜 찾기 문제는 자주 나오는데 상황별로 효율적인 방법을 찾아야 겠다.
'SQL > 프로그래머스' 카테고리의 다른 글
[Lv.2] 상품 별 오프라인 매출 구하기 (inner join, group by) (0) | 2024.11.23 |
---|---|
[Lv.2] 카테고리 별 상품 개수 구하기 (STRING, 문자열 함수) (0) | 2024.11.07 |
[Lv.2] 가격이 제일 비싼 식품의 정보 출력하기 (쿼리 실행 순서) (0) | 2024.11.06 |
[Lv.2] NULL 처리하기 (0) | 2024.11.06 |
[Lv.2] 이름에 el이 들어가는 동물 찾기 (LIKE) (0) | 2024.11.06 |