SQL
프로그래머스 SQL문제(8) - 대여 기록이 존재하는 자동차 리스트 구하기
김랑해
2023. 8. 9. 19:03
https://school.programmers.co.kr/learn/courses/30/lessons/157341
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SELECT CAR_ID
FROM(
SELECT CC.CAR_TYPE, RH.CAR_ID, RH.START_DATE
FROM CAR_RENTAL_COMPANY_CAR CC
INNER JOIN(
SELECT CAR_ID, TO_CHAR(START_DATE, 'YYYY-MM') START_DATE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY) RH
ON RH.CAR_ID = CC.CAR_ID)
WHERE CAR_TYPE = '세단' AND START_DATE LIKE '2022-10'
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
더 쉽게 풀 수 있는 방법이 없을까?
SELECT DISTINCT RH.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR CC
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY RH
ON CC.CAR_ID = RH.CAR_ID
WHERE CC.CAR_TYPE = '세단' AND TO_CHAR(START_DATE, 'YYYY-MM') = '2022-10'
ORDER BY CAR_ID DESC;
INNER JOIN 이 먼저 발생 > WHERE > SELECT 절이기 때문에 굳이 서브쿼리를 만들어서 고생할 필요가 없다
<LEARNING POINT>
1. INNER JOIN이 WHERE > SELECT 보다 먼저 발생하니 서브쿼리 쓰기 전 생각해보기
2. DISTICNT는 함수 형태로 사용해선 안된다
-SELECT CAR_NAME DISTINCT(CAR_ID) X
- SELECT DISTINCT CAR_NAME, CAR_ID O