-
<프로그래머스> 식품분류별 가장 비싼 식품의 정보 조회하기코딩테스트/SQL 코딩테스트 2023. 12. 21. 13:29
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- FOOD_PRODUCT 테이블에서 식품 분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL 작성
- 이 때 식품 분류가 과자, 국, 김치, 식용유인 경우만을 출력
- 결과는 식품가격을 기준으로 내림차순 정렬
1) Oracle
SELECT CATEGORY, PRICE, PRODUCT_NAME FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY CATEGORY ORDER BY PRICE DESC) RN, F.* FROM FOOD_PRODUCT F ) WHERE RN = 1 AND CATEGORY IN ('과자', '국', '김치', '식용유') ORDER BY 2 DESC;
이전에 풀었던 문제(https://jinhyunbae.tistory.com/66)와 마찬가지로 아래의 MySQL 코드를 문법에 맞추어 똑같이 실행했을 때 GROUP BY 오류가 났다. 따라서 동일하게 서브쿼리와 ROW_NUMBER() 윈도우함수를 이용하여 해결하였다.
2) MySQL
SELECT CATEGORY, PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '국', '김치', '식용유') AND PRICE IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY) GROUP BY CATEGORY ORDER BY 2 DESC;
MySQL의 경우에는 WHERE절 조건에 서브쿼리를 작성하여서 가장 가격이 비싼 식품 카테고리를 출력하였고 이를 가격과 비교하고 GROUP BY 하는 것으로 문제를 해결하였다.
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 최댓값 구하기 (1) 2023.12.21 <프로그래머스> 5월 식품들의 총매출 조회하기 (1) 2023.12.21 <프로그래머스> 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) 2023.12.21 <프로그래머스> 대여 기록이 존재하는 자동차 리스트 구하기 (1) 2023.12.21 <프로그래머스> 모든 레코드 조회하기 (0) 2023.12.21 - 문제 요구사항