알고리즘(PS)/sql

[프로그래머스 MySql] 가격이 제일 비싼 식품의 정보 출력하기

5353 2024. 2. 8. 04:01
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/131115

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

테이블에서 가장 비싼 가격을 조회해서 출력하기

 

 

오답 코드

-- 코드를 입력하세요
SELECT PRODUCT_ID ,PRODUCT_NAME ,PRODUCT_CD ,CATEGORY, MAX(PRICE) AS PRICE
FROM FOOD_PRODUCT;

오답 사유

SELECT 절에서 MAX와 함께 다른 칼럼을 조회하면 가장 높은 PRICE가 뜨긴하지만 원래 테이블의 상품 id , 상품이름,  카테고리...등등이 맞지 않는다.

원래 테이블

출력 결과

자세히보면 1번 행의 정보에서 가장 높은 가격으로 수정되어 결과가 출력 된것을 알수 있다 따라서 , where 절에서 조건부로 PRICE행을 먼저 찾은 뒤 조회해야한다.

 

아래는 서브 쿼리를 이용해 가장 큰 가격을 조회하고, 최대 가격인 행을 조회하는 쿼리다  

정답 코드1

-- 코드를 입력하세요
SELECT PRODUCT_ID ,PRODUCT_NAME ,PRODUCT_CD ,CATEGORY,  PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (
SELECT MAX(PRICE) 
FROM FOOD_PRODUCT
);

아래는 내 코드는 아니지만 질문 게시판에 신박한 풀이가 있어서 가져왔다.

가격을 기준으로 내림차순 한 후에 하나의 행만 출력하는 방식인데, 이 경우 다른 케이스에서 가격의 최댓값이 19000인 값이 두개라면, 둘중 하나만 출력 되기에 문제가 생길수 있다. 그렇지만 가격이 모두 다르다고 가정된 경우 서브쿼리까지 돌지 않아도 되어 빠르다.

정답코드2

SELECT * FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;

 

 

반응형