문제풀이/SQL

SUM, MAX, MIN _ 가격이 제일 비싼 식품의 정보 출력하기_ SQL

monawa 2023. 2. 1.
728x90

문제 설명

다음은 식품의 정보를 담은 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 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.


예시

FOOD_PRODUCT 테이블이 다음과 같을 때

PRODUCT_IDPRODUCT_NAMEPRODUCT_CDCATEGORYPRICE
P0018 맛있는고추기름 CD_OL00008 식용유 6100
P0019 맛있는카놀라유 CD_OL00009 식용유 5100
P0020 맛있는산초유 CD_OL00010 식용유 6500
P0021 맛있는케첩 CD_OL00001 소스 4500
P0022 맛있는마요네즈 CD_OL00002 소스 4700

SQL을 실행하면 다음과 같이 출력되어야 합니다.

PRODUCT_IDPRODUCT_NAMEPRODUCT_CDCATEGORYPRICE
P0020 맛있는산초유 CD_OL00010 식용유 6500

나의 풀이 

# 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회
SELECT *
# FOOD_PRODUCT 테이블에서
from FOOD_PRODUCT
# 가격이 제일 비싼 식품의
where  PRICE = (select max(PRICE) from FOOD_PRODUCT)

풀이법 

서브쿼리를 이용한다 

 

서브쿼리란 ?

하나의 SQL문에 포함되어 있는 또 다른 SQL문

  • 괄호로 감싸서 사용한다
  • order by를 사용하지 못한다
  • 단일행비교 , 복수행 비교 연산자와 함께 사용가능

단일행 서브쿼리 

서브쿼리가 단일 행 비교 연산자(=, <, <=, >, >=, <>)와 함께 사용할 때

  • 서브쿼리의 결과 건수가 반드시 1건 이하여야 합니다.(만약 결과가 2건 이상인 경우 오류가 발생합니다)

다중 행 서브쿼리

다중 행 연산자  설명
 IN  서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미한다.
 ALL  서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미한다.
 ANY  서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미한다.
 EXISTS  서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미한다.
728x90

댓글