0. 문제 소개
출처 : 프로그래머스
언어 : MySQL
제목 : 가장 비싼 상품 구하기
레벨 : Lv1
분류 : SUM, MAX, MIN
https://school.programmers.co.kr/learn/courses/30/lessons/131697
1. 문제 조건 및 요구사항
문제 )
PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요.
이때 컬럼명은 MAX_PRICE로 지정해주세요.
문제 조건 )
다음은 어느 의류 쇼핑몰에서 판매 중인 상품들의 정보를 담은 PRODUCT 테이블입니다.
PRODUCT 테이블은 아래와 같은 구조로 되어있으며,
PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 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문에 대해 개수를 제한하거나 정렬할 필요가 없다
'[ Computer Science ] > Database_sql' 카테고리의 다른 글
[Database/midterm] SQL 문법 기초 (11) | 2024.10.19 |
---|---|
[Database/midterm] 데이터베이스 설계 (개념적, 논리적) (2) | 2024.10.19 |
[Database/MySQL] 실습을 위한 초기 데이터 생성 (4) | 2024.10.17 |
[프로그래머스/MySQL] Lv. 1 평균 일일 대여 요금 구하기 (SELECT) (7) | 2024.10.17 |
[프로그래머스/MySQL] Lv. 1 역순 정렬하기 (SELECT) (0) | 2024.10.17 |
[프로그래머스/MySQL] Lv. 1 아픈 동물 찾기 (SELECT) (0) | 2024.10.17 |
[Database/MySQL] 데이터베이스와 테이블 생성 후 조회하기 ( error 1046, error 1049, err 1065 ) (3) | 2024.10.01 |