알고리즘 문제 풀이/프로그래머스

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

잘잔디 2024. 9. 11. 21:12

[level 2] 가격이 제일 비싼 식품의 정보 출력하기 - 131115

문제 링크

성능 요약

메모리: 0.0 MB, 시간: 0.00 ms

구분

코딩테스트 연습 > SUM, MAX, MIN

채점결과

Empty

제출 일자

2024년 09월 11일 21:08:21

문제 설명

다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미합니다.

Column name Type Nullable
PRODUCT_ID VARCHAR(10) FALSE
PRODUCT_NAME VARCHAR(50) FALSE
PRODUCT_CD VARCHAR(10) TRUE
CATEGORY VARCHAR(10) TRUE
PRICE NUMBER TRUE

문제

FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.


예시

FOOD_PRODUCT 테이블이 다음과 같을 때

PRODUCT_ID PRODUCT_NAME PRODUCT_CD CATEGORY PRICE
P0018 맛있는고추기름 CD_OL00008 식용유 6100
P0019 맛있는카놀라유 CD_OL00009 식용유 5100
P0020 맛있는산초유 CD_OL00010 식용유 6500
P0021 맛있는케첩 CD_OL00001 소스 4500
P0022 맛있는마요네즈 CD_OL00002 소스 4700

SQL을 실행하면 다음과 같이 출력되어야 합니다.

PRODUCT_ID PRODUCT_NAME PRODUCT_CD CATEGORY PRICE
P0020 맛있는산초유 CD_OL00010 식용유 6500

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

나의 풀이

처음에는 select안에 max를 넣어 WHERE절 없이 적었다

왜 잘못된건지 모르고 있다가 max(PRICE)왜의 값들은 1번 ID값만 출력되는 것을 볼 수 있었다

집계함수임 max로 뽑아낸 가격은 맞지만 나머지 값이 해당 가격에 해당하지 않는 내용을 가져온 것이다

그래서 서브쿼리로 작성했고, DESC로 정렬해서 첫번째 값만 읽어오는 방법도 좋을 것 같다

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


# P0051	맛있는배추김치	CD_KC00001	김치	19000