프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
다음은 식품의 정보를 담은 FOOD_PRODUCT
테이블입니다. FOOD_PRODUCT
테이블은 다음과 같으며 PRODUCT_ID
, PRODUCT_NAME
, PRODUCT_CD
, CATEGORY
, PRICE
는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다.
문제
FOOD_PRODUCT
테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
예시
FOOD_PRODUCT
테이블이 다음과 같을 때
SQL을 실행하면 다음과 같이 출력되어야 합니다.
풀이
기존코드
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY REGEXP '과자|국|김치|식용유'
GROUP BY CATEGORY
ORDER BY MAX_PRICE DESC
오직 MAX
로 조회하면 해당 값에 해당하는 값만 조회한다.
이렇게 되면 PRODUCT_NAME
과 일치하지 않기 때문에 일치하는 ‘행’을 기준으로 먼저 서브쿼리를 통해 필터링하고 행 전체에 대한 값으로 조회한다.
최종코드
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (
SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT WHERE CATEGORY REGEXP '과자|국|김치|식용유' GROUP BY CATEGORY)
ORDER BY MAX_PRICE DESC
'🤯 코딩테스트 > SQL' 카테고리의 다른 글
[SQL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.02.23 |
---|---|
[SQL] 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.02.22 |
[MySql] 프로그래머스 SQL 고득점 kit를 풀면서 느낀 중요한 Query문 정리 (0) | 2024.02.15 |
[SQL] 조건별로 분류하여 주문상태 출력하기 (0) | 2024.02.15 |
[SQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2024.02.15 |