Q. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로
2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서
해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요.
특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
(정답)
SELECT
MONTH(START_DATE) AS 'MONTH',
CAR_ID,
COUNT(HISTORY_ID) AS 'RECORDS'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE YEAR(START_DATE) = '2022'
AND MONTH(START_DATE) BETWEEN '8' AND '10'
GROUP BY CAR_ID
HAVING COUNT(HISTORY_ID) >= 5
AND MONTH(START_DATE) BETWEEN '8' AND '10'
)
GROUP BY MONTH, CAR_ID
HAVING RECORDS > 0
ORDER BY MONTH ASC, CAR_ID DESC
이 답안을 참고해서 나만의 언어로? 내 수준에서 비슷하게 풀어쓸 수 있는 코드로 풀어봤는데, 왜 내꺼는 오류고 이사람꺼만 정답이라고 하는지 이해가 안간다. 왜 month조건은 두번이나 적었을까..?
다음에 다시 시도해봐야겠다.
Q. MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요.
회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순,
리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.
(정답)
select a.member_name, b.review_text, date_format(b.review_date, '%Y-%m-%d') REVIEW_DATE
from member_profile a join rest_review b
on a.member_id=b.member_id
where b.member_id = (select member_id
from rest_review
group by member_id
order by count(*) desc
limit 1)
order by 3, 2
어느정도 큰틀은 작성할 줄 아는데,
아직도 디테일한 부분에서 실수가 잦고, 디테일 한 부분에서 모르는게 너무 많다고 느끼는 중이다 😥
8월부터 10월까지 총 대여횟수가 5회 이상인 차량에 대해서 월별로 횟수를 보여줘야 하고,
즉, 월별로 출력했을 때, RECORDS 값이 5 미만일 수도 있다고 한다.