코딩테스트/Oracle DB
[Oracle] 프로그래머스 : 가격이 제일 비싼 식품의 정보 출력하기
v조아리v
2024. 1. 18. 18:15
반응형
문제
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
구조
PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미합니다.
예시
처음에 작성한 쿼리
select
product_id,
product_name,
product_cd,
category,
price
from food_product
where price = max(price)
틀린 이유
max()의 사용법이 옳지 않습니다.
수정한 쿼리
select
product_id,
product_name,
product_cd,
category,
price
from (
select
row_number() over(order by price desc) rnum,
product_id,
product_name,
product_cd,
category,
price
from food_product
)
where rnum = 1
먼저 서브쿼리로 price를 기준으로 내림차순으로 정렬한 뒤에 번호를 메기고, 그 번호 중 1번을 출력해주도록 해줍니다. price를 기준으로 내림차순으로 정렬했기 때문에 가장 비싼 항목에 1번이 붙을 것입니다.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131115
반응형