본문 바로가기

SQL Kit/SUM,MAX,MIN

가격이 제일 비싼 식품의 정보 출력하기 [ 프로그래머스 | SQL Kit | Level 2 ]

1. 문제목적

그룹 함수(MAX)와 서브쿼리를 사용하여 특정 조건에 맞는 데이터를 효율적으로 조회하는 방법을 학습하는 것이다. 특히, 가장 큰 값(또는 작은 값)을 찾고 해당 데이터를 출력하는 SQL 작성 방법을 익히는 데 중점을 둔다.


2. 핵심개념

MAX 함수

  • 정의: 특정 컬럼의 최대값을 반환하는 집계 함수
SELECT MAX(컬럼명)
FROM 테이블명;
  • 활용 예시:
  • 가장 비싼 상품의 가격을 찾을 때 사용.

서브쿼리

  • 정의: 하나의 쿼리 안에 포함된 또 다른 쿼리.
  • 사용 방법:
    SELECT 컬럼명
    FROM 테이블명
    WHERE 컬럼명 = (SELECT MAX(컬럼명) FROM 테이블명);
    
  • 서브쿼리는 메인 쿼리에서 조건에 맞는 데이터를 필터링하거나 계산된 값을 제공.
  • 특징:메인 쿼리와 연계하여 동적으로 값을 계산하거나 필터링 가능.
  • 서브쿼리는 괄호로 감싸서 작성.

(3) SELECT문

  • 정의: 특정 테이블에서 데이터를 조회하기 위한 SQL문.
SELECT 컬럼명
FROM 테이블명
WHERE 조건;

3. 문제해결 절차

  1. 요구사항 분석:
    • FOOD_PRODUCT 테이블에서 가격(PRICE)이 가장 높은 제품의 모든 정보를 출력.
    • 조건에 맞는 데이터를 찾기 위해 MAX 함수를 사용.
  2. 접근 방법:
    • 서브쿼리를 사용하여 가격의 최대값(MAX(PRICE))을 찾는다.
    • 메인 쿼리에서 서브쿼리의 결과를 조건으로 사용하여 해당 제품의 정보를 조회.
  3. 단계적 설계:
    • 1단계: MAX 함수를 사용해 가장 비싼 제품의 가격을 서브쿼리로 계산.
    • 2단계: 메인 쿼리에서 서브쿼리의 결과를 이용해 조건을 적용.
    • 3단계: 최종적으로 SELECT문을 통해 모든 정보를 출력.

4. 코드작성

sql
복사편집
-- 가격이 제일 비싼 식품의 정보를 출력하는 SQL
SELECT
    PRODUCT_ID,      -- 제품 ID
    PRODUCT_NAME,    -- 제품 이름
    PRODUCT_CD,      -- 제품 코드
    CATEGORY,        -- 카테고리
    PRICE            -- 제품 가격
FROM
    FOOD_PRODUCT     -- FOOD_PRODUCT 테이블에서 조회
WHERE
    PRICE = (        -- 가격이 가장 높은 제품만 조회
        SELECT MAX(PRICE) -- FOOD_PRODUCT 테이블에서 최대 가격을 계산
        FROM FOOD_PRODUCT
    );

5. 코드분석

(1) MAX 함수

  • SELECT MAX(PRICE) FROM FOOD_PRODUCT:서브쿼리로 사용하여 최대 가격을 조건으로 필터링.
  • FOOD_PRODUCT 테이블에서 가격(PRICE)의 최대값을 계산.

(2) 서브쿼리

  • WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT):
  • 서브쿼리를 활용하여 메인 쿼리에서 PRICE가 최대값인 레코드만 필터링.

(3) SELECT문

  • SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE:최대 가격에 해당하는 제품의 상세 정보를 반환.
  • FOOD_PRODUCT 테이블에서 요구된 모든 컬럼을 출력.