반응형
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;
반응형
'알고리즘(PS) > sql' 카테고리의 다른 글
[프로그래머스 MySql] 주문량이 많은 아이스크림들 조회하기 (1) | 2024.02.15 |
---|---|
[프로그래머스 MySql] 최갯값 구하기 (1) | 2024.02.08 |
[프로그래머스 MySql] 3월에 태어난 여성 회원 목록 출력하기 (1) | 2024.02.08 |
[프로그래머스 MySql] 3월에 태어난 여성 회원 목록 출력하기 (0) | 2024.02.08 |
[프로그래머스 MySql] 12세 이하인 여자 환자 목록 출력하기 (0) | 2024.02.07 |