46. 대여 기록이 존재하는 자동차 리스트 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/157341
정답 코드:
SELECT DISTINCT cc.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR cc
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY ch
ON cc.CAR_ID = ch.CAR_ID
WHERE cc.CAR_TYPE = '세단'
AND MONTH(ch.START_DATE) = 10
ORDER BY cc.CAR_ID DESC;
문제 풀이때 했던 생각.
| 자동차 종류가 '세단'인 자동차들을 먼저 분류 그리고 10월에 대여를 시작한 기록이 있는 자동차 ID 분류 이후 차량 id로 오름차순 정렬 |
무엇이 잘못되었나?
| 1. 같은 차량의 id가 중복되어 출력 |
해결법
| 1. DISTINCT를 사용해 중복값 제거 |
다음엔 이걸로 풀어보자
| 서브쿼리문으로 한번 풀어보자 (FROM, WHERE문으로 풀기 가능해보임) |
48. 즐겨찾기가 가장 많은 식당 정보 출력하기
문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131123
정답 코드:
SELECT
r.FOOD_TYPE,
r.REST_ID,
r.REST_NAME,
r.FAVORITES
FROM REST_INFO r
INNER JOIN (
SELECT FOOD_TYPE, MAX(FAVORITES) AS MAXFAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE) AS f
ON r.FOOD_TYPE = f.FOOD_TYPE
AND r.FAVORITES = f.MAXFAVORITES
ORDER BY FOOD_TYPE DESC
문제 풀이때 했던 생각.
| 처음엔 max(favorites)를 한뒤 food_type를 group by로 묶으려 했으나 REST_ID, REST_NAME이 있기 때문에 오류 발생 때문에 서브쿼리를 자체 조인(Join)으로 사용해 음식 종류별 최대 즐겨찾기 수 계산 |
다음엔 이걸로 풀어보자
| RANK() 또는 ROW_NUMBER() 같은 윈도우 함수를 활용해 문제 풀어보기 |
49. 식품분류별 가장 비싼 식품의 정보 조회하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131116
정답 코드:
SELECT
f.CATEGORY,
f.PRICE AS MAX_PRICE,
f.PRODUCT_NAME
FROM FOOD_PRODUCT f
INNER JOIN (
SELECT CATEGORY,
MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
GROUP BY CATEGORY) AS mp
ON f.CATEGORY = mp.CATEGORY
AND f.PRICE = mp.MAX_PRICE
WHERE f.CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY PRICE DESC
문제 풀이때 했던 생각.
| 식품분류별로 가격이 제일 비싼 식품을 원하기 때문에 이 문제도 서브쿼리를 만들어서 JOIN 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력을 원하기 때문에 where in으로 필터링 |
다음엔 이걸로 풀어보자
| RANK() 또는 ROW_NUMBER() 같은 윈도우 함수를 활용해 문제 풀어보기 |
50. 5월 식품들의 총매출 조회하기
문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131117
정답 코드:
SELECT
fp.PRODUCT_ID,
fp.PRODUCT_NAME,
SUM(fp.PRICE * fo.AMOUNT) AS TOTAL_SALES
FROM FOOD_PRODUCT fp
INNER JOIN FOOD_ORDER fo
ON fp.PRODUCT_ID = fo.PRODUCT_ID
WHERE fo.PRODUCE_DATE >= '2022-05-01'
AND fo.PRODUCE_DATE < '2022-06-01'
GROUP BY fp.PRODUCT_ID, fp.PRODUCT_NAME
ORDER BY TOTAL_SALES DESC, fp.PRODUCT_ID ASC
문제 풀이때 했던 생각.
| 테이블에서 생산일자가 2022년 5월인 식품들 분류 식품 ID, 식품 이름, 총매출을 조회 총매출을 기준으로 내림차순 정렬 식품 ID를 기준으로 오름차순 |
다음엔 이걸로 풀어보자
| 서브쿼리문으로 한번 풀어보자 (FROM, WHERE문으로 풀기 가능해보임) |
'E.코드카타 > Level 3' 카테고리의 다른 글
| 코드카타 Level 3 다시 풀어보기 31~50 (1) | 2026.01.15 |
|---|---|
| 코드카타 Level 3 43~45 (0) | 2026.01.08 |
| 코드카타 Level 3 39~42 (0) | 2026.01.07 |
| 코드카타 Level 3 34~38 (sql 복습시 참고) -나중에 서브쿼리로 풀어보기- (0) | 2026.01.06 |
| 코드카타 Level 3 1번~3번 (0) | 2026.01.05 |
