부제:
식품분류별 가장 비싼 식품의 정보 조회하기, 레벨 3
1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131116
2. 정답 코드:
=> 서브쿼리 활용
SELECT
category,
price as max_price,
product_name
from food_product
where (category, price) in (
select
category,
max(price) as max_price
from food_product
where category in ('과자','국','김치','식용유')
group by category
)
order by max_price desc
=> 윈도우 함수(Window Function) 활용
select
category,
price as max_price,
product_name
from (
select
category,
price,
product_name,
rank() over (partition by category order by price desc) as rnk
from food_product
where category in ('과자','국','김치','식용유')
) food
where rnk=1
order by max_price desc
3. 오류 상황:
SELECT
category,
max(price) as max_price,
product_name
from food_product
where category in ('과자','국','김치','식용유')
group by category
order by max_price desc
=> 서브쿼리 미활용
4. 시도 방법: 서브쿼리 활용
5. 최종 문제 해결 방법:
=>가장 비싼 가격을 먼저 구한 뒤, 그 카테고리가 동시에 일치하는 행을 전체 테이블에서 다시 찾아내는 방식을 서브쿼리를 활용해서 구현
=> 윈도우함수를 활용해 카테고리별로 가격 순위를 매긴 후, 순위가 1위인 데이터만 필터링
'SQL 알고리즘 코드카타' 카테고리의 다른 글
| SQL 알고리즘 코드카타 17일차(3) 26.01.15(목) (0) | 2026.01.15 |
|---|---|
| SQL 알고리즘 코드카타 17일차(2) 26.01.15(목) (1) | 2026.01.15 |
| SQL 알고리즘 코드카타 16일차(3) 26.01.14(수) (1) | 2026.01.14 |
| SQL 알고리즘 코드카타 16일차(2) 26.01.14(수) (0) | 2026.01.14 |
| SQL 알고리즘 코드카타 16일차(1) 26.01.14(수) (0) | 2026.01.14 |