728x90
프로그래머스에서 제공하는 SQL문제 매일 풀기 챌린지
문제 설명
다음은 식품의 정보를 담은 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 |
정답
select *
from food_product
where price = ( select max(price) from food_product );
해설해 보기
# 1. SELECT절
모든 컬럼을 추출하기 때문에
모든 컬럼을 의미하는 Asterisk(*)를
select절에 기입한다.
# 2. FROM 절
출력하고자 하는 데이터를 가져올
테이블 명을 기입해 준다.
# 3. WHERE절
가격이 가장 비싼 식품을 조건으로 줘야 한다.
즉, 가격 = 가장 비싼 가격
위의 조건에 해당하는 데이터를 출력해야 하는 것이다.
이 문제에서 필요한 것은 Max() 함수와 서브쿼리문이다.
Max() 함수는 괄호 한의 값 중 가장 비싼 값을 추출해주는 함수이다.
따라서 가장 비싼 가격을 추출할 수 있는 서브쿼리를 작성하고
그 서브쿼리에서 나온 결괏값을 price와 등치조건을 주면,
price = max(price)를 의미하는 결과를 얻을 수 있다.
결과 출력
출처 : 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
반응형
'SQL 문제 풀기 > 1. 프로그래머스 SQL : 2023.12.17~2024.2.29' 카테고리의 다른 글
<프로그래머스 34> 중성화 여부 파악하기(Lv.2) (0) | 2024.01.19 |
---|---|
<프로그래머스 33> 카테고리 별 상품 개수 구하기(Lv.2) (0) | 2024.01.18 |
<프로그래머스 31> DATETIME에서 DATE로 형 변환(Lv.2) (2) | 2024.01.16 |
<프로그래머스 30> NULL 처리하기(Lv.2) (2) | 2024.01.15 |
<프로그래머스 29> 이름에 EL이 들어가는 동물 찾기(Lv.2) (0) | 2024.01.14 |