본문 바로가기
[ Computer Science ]/Database_sql

[프로그래머스/MySQL] Lv. 1 가장 비싼 상품 구하기 (SUM, MAX, MIN)

by dev charlotte 2024. 10. 17.

0. 문제 소개

출처 : 프로그래머스 

언어 : MySQL 

제목 : 가장 비싼 상품 구하기

레벨 : Lv1

분류 : SUM, MAX, MIN

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

 

프로그래머스

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

programmers.co.kr

 

 

1. 문제 조건 및 요구사항

문제 )

PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요.

이때 컬럼명은 MAX_PRICE로 지정해주세요.

 

문제 조건 )

다음은 어느 의류 쇼핑몰에서 판매 중인 상품들의 정보를 담은 PRODUCT 테이블입니다. 

PRODUCT 테이블은 아래와 같은 구조로 되어있으며, 

PRODUCT_IDPRODUCT_CODEPRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.

 

출력 조건 )

 

2. 정답 풀이

PRODUCT 테이블에서 판매 중인 상품 중 (select할 레코드가 속한 테이블을 from으로 명시)

가장 높은 판매가를 출력하는 SQL문 (select 판매가 + 가장 높은 것이므로 출력할 값은 가장 커야 하고, 하나여야 함)

이때 컬럼명은 MAX_PRICE로 지정해주세요. (출력에 사용할 컬럼명 지정)

 

2-1. LIMIT문 사용

SELECT PRICE AS MAX_PRICE
FROM PRODUCT
WHERE PRICE
ORDER BY PRICE DESC
LIMIT 1;

가격을 출력하되 내림차순으로 정렬하면 

맨 윗쪽부터 가장 높은 가격순으로 정렬된다

 

그 상황에서 하나만 출력하도록 Limit로 제한하면

맨 위에 위치한 가장 높은 가격 하나만 출력할 수 있다

 

2-2. WHERE문 사용

SELECT PRICE AS MAX_PRICE
FROM PRODUCT
WHERE PRICE  = (SELECT MAX(PRICE) FROM PRODUCT) ;
# ORDER BY PRICE DESC ;

정렬하는 코드는 불필요하기 때문에

주석처리 해두긴 했지만 쓰는 건 오히려 비효율적이다

 

중첩 WHERE문으로 

PRODUCT 테이블에서 MAX 가격을 선택해서 받고 

그것을 출력하기 때문에 이미 선택 대상의 행이 하나라 

가장 바깥 SELECT문에 대해 개수를 제한하거나 정렬할 필요가 없다

 

 

728x90