민규의 흔적

[오라클 SQL] 프로그래머스 - 가격이 제일 비싼 식품의 정보 출력하기 본문

프로그래머스 SQL

[오라클 SQL] 프로그래머스 - 가격이 제일 비싼 식품의 정보 출력하기

민규링 2023. 10. 19. 23:42

지적 및 질문은 언제나 환영입니다 !

 

2023년 10월 19일

문제 링크 : 프로그래머스 - 가격이 제일 비싼 식품의 정보 출력하기

 

문제 설명

다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미합니다.

 

 

 

문제

FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.

 

입력 예시

FOOD_PRODUCT  테이블이 다음과 같다고 가정.

 

 

출력 예시

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

 

 


 

TABLE 생성

CREATE TABLE FOOD_PRODUCT(
    PRODUCT_ID VARCHAR(10) NOT NULL,
    PRODUCT_NAME VARCHAR(50) NOT NULL,
    PRODUCT_CD VARCHAR(10),
    CATEGORY VARCHAR(10),
    PRICE NUMBER,
    PRIMARY KEY(PRODUCT_ID)
);

 

예시 데이터 삽입

INSERT INTO FOOD_PRODUCT VALUES('P0018', '맛있는고추기름', 'CD_OL00008', '식용유', 6100);
INSERT INTO FOOD_PRODUCT VALUES('P0019', '맛있는카놀라유', 'CD_OL00009', '식용유', 5100);
INSERT INTO FOOD_PRODUCT VALUES('P0020', '맛있는산초유', 'CD_OL00010', '식용유', 6500);
INSERT INTO FOOD_PRODUCT VALUES('P0021', '맛있는케첩', 'CD_OL00001', '소스', 4500);
INSERT INTO FOOD_PRODUCT VALUES('P0022', '맛있는마요네즈', 'CD_OL00002', '소스', 4700);

 


 

질의 요구사항

  1. 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품가격을 조회
  2. 가장 비싼 식품의 가격
  3. 조회할 식품은 가장 비싼 식품임

 

SQL 쿼리문 작성

 

질의 요구사항대로 쿼리문을 하나씩 작성해보며 접근해보겠다.

 

1. 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품가격을 조회

 

모든 식품의 모든 정보를 조회하라는 질의.

 

 

쿼리문

SELECT * 
FROM
FOOD_PRODUCT;

 

1번 질의 결과 릴레이션

 

2. 가장 비싼 식품의 가격

 

가장 비싼 식품의 가격을 알기 위해 집단함수 MAX를 사용한다.

 

쿼리문

SELECT MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT

 

2번 질의 결과 릴레이션

 

3. 조회할 식품은 가장 비싼 식품임

 

모든 식품의 모든 정보를 출력한 1번 질의 쿼리문에 '가장 비싼 금액과 금액이 같은 식품' 이라는 조건을 WHERE절에 추가한다.

2번 질의 결과 릴레이션에서 도출된 MAX_PRICE 애트리뷰트 값과, 각 애트리뷰트의 PRICE 애트리뷰트 값을 비교하면 된다.

 

 

쿼리문

SELECT * 
FROM FOOD_PRODUCT
WHERE PRICE = (
    SELECT MAX(PRICE) AS MAX_PRICE
    FROM FOOD_PRODUCT
);

 

3번 질의 결과 릴레이션

 

 

 

3번 질의에 대한 쿼리문을 끝으로, 문제가 요구하는 결과 릴레이션 도출에 성공하였다.

 


 

풀이 후기

 

집단함수 MAX를 어떻게 활용해야 하고, 중첩 질의에 익숙하다면 쉽게 풀 수 있는 문제였다.