📌 문제 정보
- 문제 이름 : 프로그래머스 - (SUM, MAX, MIN) 가격이 제일 비싼 식품의 정보 출력하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131115
📌 문제 요약
- FOOD_PRODUCT 테이블 : PRODUCT_ID(식품 ID), PRODUCT_CD(식품 이름), CATEGORY(식품 분류), PRICE(식품 가격)
- FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품 분류, 식품 가격을 조회하는 SQL문 작성
예시)
| 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 |
출력)
| PRODUCT_ID | PRODUCT_NAME | PRODUCT_CD | CATEGORY | PRICE |
| P0020 | 맛있는산초유 | CD_OL00010 | 식용유 | 6500 |
📌 내 풀이 및 코드
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE DESC -- PRICE를 기준으로 내림차순 (=가장 비싼 순)
LIMIT 1; -- 맨 위 1개의 행만 가져옴
- MAX로 풀었었는데 그걸 활용하려면 서브쿼리 개념을 알아야 했음. 근데 몰라서 힌트를 받고 다른 방식으로 제출함.
** 서브쿼리 방식의 답 **
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE -- 메인쿼리
FROM FOOD_PRODUCT
WHERE PRICE = (
SELECT MAX(PRICE) -- 서브쿼리 : 테이블 전체에서 가장 큰 가격값 구함
FROM FOOD_PRODUCT
);
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** 서브쿼리 (Subquery) **
- () 안에 들어있는 SELECT문을 서브쿼리라고 함.
- 하나의 값 or 행/열을 반환하고 WHERE(가장 많이 씀), FROM(인라인 뷰 or 파생 테이블), SELECT절(드물다) 어디든 들어갈 수 있음.
-- 기본 문법
SELECT ...
FROM 테이블
WHERE 컬럼 = (
SELECT ...
FROM 다른_또는_같은_테이블
WHERE ...
);
-- 1. WHERE 절에서 쓰는 서브쿼리
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (
SELECT MAX(PRICE) -- 가격 최대값 반환
FROM FOOD_PRODUCT
);
-- 2. FROM절에서 쓰는 서브쿼리
SELECT avg_table.CATEGORY, avg_table.AVG_PRICE
FROM (
SELECT CATEGORY, AVG(PRICE) AS AVG_PRICE
FROM FOOD_PRODUCT
GROUP BY CATEGORY
) AS avg_table;
-- 3. SELECT절에서 쓰는 서브쿼리
SELECT
PRODUCT_ID,
PRODUCT_NAME,
(SELECT MAX(PRICE) FROM FOOD_PRODUCT) AS MAX_PRICE
FROM FOOD_PRODUCT;'CODING TEST > MySQL' 카테고리의 다른 글
| Lv2 - 중성화 여부 파악하기 (0) | 2025.07.21 |
|---|---|
| Lv2 - 중복 제거하기 (0) | 2025.07.21 |
| Lv2 - 카테고리 별 상품 개수 구하기 (0) | 2025.07.20 |
| Lv2 - 이름에 el이 들어가는 동물 찾기 (0) | 2025.07.20 |
| Lv2 - 동명 동물 수 찾기 (0) | 2025.07.19 |
