728x90
문제 설명
다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미합니다.
Column nameTypeNullablePRODUCT_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_CDCATEGORYPRICEP0018 | 맛있는고추기름 | CD_OL00008 | 식용유 | 6100 |
P0019 | 맛있는카놀라유 | CD_OL00009 | 식용유 | 5100 |
P0020 | 맛있는산초유 | CD_OL00010 | 식용유 | 6500 |
P0021 | 맛있는케첩 | CD_OL00001 | 소스 | 4500 |
P0022 | 맛있는마요네즈 | CD_OL00002 | 소스 | 4700 |
SQL을 실행하면 다음과 같이 출력되어야 합니다.
PRODUCT_IDPRODUCT_NAMEPRODUCT_CDCATEGORYPRICEP0020 | 맛있는산초유 | 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
'문제풀이 > SQL' 카테고리의 다른 글
SUM, MAX, MIN _ 동물 수 구하기_ SQL (0) | 2023.02.01 |
---|---|
SUM, MAX, MIN _ 최솟값 구하기_ SQL (0) | 2023.02.01 |
SUM, MAX, MIN _ 최댓값 구하기_ SQL (0) | 2023.02.01 |
SUM, MAX, MIN _ 가장 비싼 상품 구하기_ SQL (0) | 2023.02.01 |
SELECT_ 재구매가 일어난 상품과 회원 리스트 구하기_ SQL (0) | 2023.01.31 |
댓글