본문 바로가기

반응형

문제

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

반응형
댓글