Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 문자열
- 그래프 이론
- SW Expert Academy
- oracle
- Python
- 백트래킹
- 백준 알고리즘
- 완전탐색
- 백준알고리즘
- 브루트포스
- 파이썬
- 스택
- BFS
- 오라클
- 브루트포스 알고리즘
- 너비우선탐색
- 데이터베이스
- 구현
- 프로그래머스
- 다익스트라
- 자바스크립트
- SWEA
- DFS
- 그래프 탐색
- DP
- 너비 우선 탐색
- 깊이우선탐색
- 다이나믹 프로그래밍
- javascript
- 그리디 알고리즘
Archives
- Today
- Total
민규의 흔적
[오라클 SQL] 프로그래머스 - 가격이 제일 비싼 식품의 정보 출력하기 본문
지적 및 질문은 언제나 환영입니다 !
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);
질의 요구사항
- 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품가격을 조회
- 가장 비싼 식품의 가격
- 조회할 식품은 가장 비싼 식품임
SQL 쿼리문 작성
질의 요구사항대로 쿼리문을 하나씩 작성해보며 접근해보겠다.
1. 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품가격을 조회
모든 식품의 모든 정보를 조회하라는 질의.
쿼리문
SELECT *
FROM FOOD_PRODUCT;
2. 가장 비싼 식품의 가격
가장 비싼 식품의 가격을 알기 위해 집단함수 MAX를 사용한다.
쿼리문
SELECT MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
3. 조회할 식품은 가장 비싼 식품임
모든 식품의 모든 정보를 출력한 1번 질의 쿼리문에 '가장 비싼 금액과 금액이 같은 식품' 이라는 조건을 WHERE절에 추가한다.
2번 질의 결과 릴레이션에서 도출된 MAX_PRICE 애트리뷰트 값과, 각 애트리뷰트의 PRICE 애트리뷰트 값을 비교하면 된다.
쿼리문
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (
SELECT MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
);
3번 질의에 대한 쿼리문을 끝으로, 문제가 요구하는 결과 릴레이션 도출에 성공하였다.
풀이 후기
집단함수 MAX를 어떻게 활용해야 하고, 중첩 질의에 익숙하다면 쉽게 풀 수 있는 문제였다.
'프로그래머스 SQL' 카테고리의 다른 글
[오라클 SQL] 프로그래머스 - 조건에 맞는 도서 리스트 출력하기 (2) | 2023.10.24 |
---|---|
[오라클 SQL] 프로그래머스 - 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.10.20 |
[오라클 SQL] 프로그래머스 - 12세 이하인 여자 환자 목록 출력하기 (2) | 2023.10.19 |