반응형
문제
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
반응형
'코딩테스트 > Oracle DB' 카테고리의 다른 글
[Oracle] 프로그래머스 : 입양 시각 구하기(1) (0) | 2024.01.18 |
---|---|
[Oracle] 프로그래머스 : DATETIME에서 DATE로 형 변환 (0) | 2024.01.18 |
[Oracle] 프로그래머스 : 3월에 태어난 여성 회원 목록 출력하기 (0) | 2024.01.16 |
[Oracle] 프로그래머스 : 카테고리 별 상품 개수 구하기 (0) | 2024.01.09 |
[Oracle] 프로그래머스 : 가격대 별 상품 개수 구하기 (1) | 2024.01.09 |