반응형
츄르사려고 코딩하는집사입니다.
1. [프로그래머스/SQL] 식품분류별 가장 비싼 식품의 정보 조회하기 오라클(Oracle)
2. 문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/131116
3. 문제
다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다.
Column nameTypeNullable
PRODUCT_ID | VARCHAR(10) | FALSE |
PRODUCT_NAME | VARCHAR(50) | FALSE |
PRODUCT_CD | VARCHAR(10) | TRUE |
CATEGORY | VARCHAR(10) | TRUE |
PRICE | NUMBER | TRUE |
문제
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
예시
FOOD_PRODUCT 테이블이 다음과 같을 때
PRODUCT_IDPRODUCT_NAMEPRODUCT_CDCATEGORYPRICE
P0018 | 맛있는고추기름 | CD_OL00008 | 식용유 | 6100 |
P0019 | 맛있는카놀라유 | CD_OL00009 | 식용유 | 5100 |
P0020 | 맛있는산초유 | CD_OL00010 | 식용유 | 6500 |
P0021 | 맛있는케첩 | CD_SC00001 | 소스 | 4500 |
P0022 | 맛있는마요네즈 | CD_SC00002 | 소스 | 4700 |
P0039 | 맛있는황도 | CD_CN00008 | 캔 | 4100 |
P0040 | 맛있는명이나물 | CD_CN00009 | 캔 | 3500 |
P0041 | 맛있는보리차 | CD_TE00010 | 차 | 3400 |
P0042 | 맛있는메밀차 | CD_TE00001 | 차 | 3500 |
P0099 | 맛있는맛동산 | CD_CK00002 | 과자 | 1800 |
SQL을 실행하면 다음과 같이 출력되어야 합니다.
CATEGORYMAX_PRICEPRODUCT_NAME
식용유 | 6500 | 맛있는산초유 |
과자 | 1800 | 맛있는맛동산 |
4. 풀이
- 먼저, 과자, 국, 김치, 식용유가 있는 데이터에서 CATEGORY를 기준으로 GROUP BY하여 최고 가격을 드라이빙 테이블로 가져온다.
- 그 다음, PRODUCT_NAME을 가져오기 위해 테이블 1개를 더 INNER JOIN을 한다. 기준은 CATEGORY와 MAX_PRICE를 기준으로 JOIN을 한다.
- 조건에 맞게 컬럼을 SELECT하고, MAX_PRICE 기준으로 내림차순 정렬을 한다.
5. 소스 코드
SELECT FP01.CATEGORY
, FP01.MAX_PRICE
, FP02.PRODUCT_NAME
FROM (
SELECT CATEGORY
, MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
) FP01
INNER JOIN ( SELECT CATEGORY
, PRICE
, PRODUCT_NAME
FROM FOOD_PRODUCT
) FP02 ON FP01.CATEGORY = FP02.CATEGORY AND FP01.MAX_PRICE = FP02.PRICE
ORDER BY FP01.MAX_PRICE DESC
반응형
'알고리즘 > 프로그래머스SQL' 카테고리의 다른 글
[프로그래머스/SQL] 우유와 요거트가 담긴 장바구니 오라클(Oracle) (0) | 2022.10.15 |
---|---|
[프로그래머스/SQL] 헤비 유저가 소유한 장소 오라클(Oracle) (0) | 2022.10.15 |
[프로그래머스/SQL] 나이 정보가 없는 회원 수 구하기 오라클(Oracle) (0) | 2022.10.15 |
[프로그래머스/SQL] 3월에 태어난 여성 회원 목록 출력하기 오라클(Oracle) (0) | 2022.10.15 |
[프로그래머스/SQL] 조건에 맞는 회원수 구하기 오라클(Oracle) (0) | 2022.10.14 |
[프로그래머스/SQL] 5월 식품들의 총매출 조회하기 오라클(Oracle) (0) | 2022.10.14 |
[프로그래머스/SQL] 카테고리 별 상품 개수 구하기 오라클(Oracle) (0) | 2022.10.14 |
[프로그래머스/SQL] 그룹별 조건에 맞는 식당 목록 출력하기 오라클(Oracle) (0) | 2022.10.14 |
최근댓글