티스토리 뷰
문제 설명
다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. 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_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(칼럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해 주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해 주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해 주세요.
문제 풀이
WITH MonthlyRentals AS (
SELECT
EXTRACT(MONTH FROM START_DATE) AS MONTH,
CAR_ID,
COUNT(*) AS RECORDS
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE
START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY
EXTRACT(MONTH FROM START_DATE),
CAR_ID
),
HeavyRenters AS (
SELECT
CAR_ID
FROM
MonthlyRentals
GROUP BY
CAR_ID
HAVING
SUM(RECORDS) >= 5
)
SELECT
MR.MONTH,
MR.CAR_ID,
MR.RECORDS
FROM
MonthlyRentals MR
JOIN
HeavyRenters HR ON MR.CAR_ID = HR.CAR_ID
WHERE
MR.RECORDS > 0
ORDER BY
MR.MONTH ASC,
MR.CAR_ID DESC;
WITH AS절로 식을 간단하게 정리했으며, 쿼리 과정에서 만들어진 MonthlyRentals과 HeavyRenters를 조인시키고, 정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외하는 쿼리문을 작성했다.
'SQL > SQL 테스트 연습' 카테고리의 다른 글
프로그래머스 Lv4. 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2023.08.16 |
---|---|
프로그래머스 Lv4. 보호소에서 중성화한 동물 (0) | 2023.08.16 |
프로그래머스 Lv3. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2023.08.16 |
프로그래머스 Lv3. 헤비 유저가 소유한 장소 (0) | 2023.08.16 |
프로그래머스 Lv3. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.08.15 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래밍
- 프로그래머스
- LV2
- mysql
- 데이터분석
- sql 테스트
- ai
- 알고리즘
- LV1
- 파이썬
- lv4
- API
- SQLD
- 부스트코스
- 쿼리 테스트
- 딥러닝
- EDA
- Python
- 머신러닝
- Lv3
- 캐글
- 인공지능
- 데이터 시각화
- Kaggle
- 데이터 분석
- SQL
- nlp
- 데이터사이언스
- ML
- 태블로
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함