728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131116#qna
- 식품 분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름 조회하기
- 식품 분류가 '과자', '국', '김치', '식용유'인 경우만 출력
- 식품 가격 기준 내림차순 정렬
테이블
FOOD_PRODUCT |
풀이과정
# 오답
- 식품분류(CATEGORY)별로 가장 비싼 MAX(PRICE) 구하라고 했을 때 단순하게 GROUP BY 해서 풀면 틀림
- 이유는 CATEGORY, MAX_PRICE 뒤에 PRODUCT_NAME이 잘못 출력되기 때문
- SELECT문에서 PRODUCT_NAME을 조회할 때
해당 CATEGORY와 MAX_PRICE에 따른 PRODUCT_NAME이 출력되는 것이 아님 주의! - WHERE절 서브쿼리 이용 ㄱㄱ
- SELECT문에서 PRODUCT_NAME을 조회할 때
1 2 3 4 5 6 7 | SELECT CATEGORY, MAX(PRICE) MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE CATEGORY IN('과자', '국', '김치', '식용유') GROUP BY CATEGORY ORDER BY PRICE DESC | cs |
# 정답
- WHERE절 : (CATEGORY, PRICE) 조합과 서브쿼리 결과문을 비교해서 문제에서 요구한 조건에 맞는 경우의
CATEGORY, MAX_PRICE, 그리고 PRODUCT_NAME을 출력하게 만듦
1 2 3 4 5 6 7 8 9 | SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE (CATEGORY, PRICE) IN(SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '국', '김치', '식용유') GROUP BY CATEGORY) ORDER BY MAX_PRICE DESC | cs |
728x90
'코딩테스트 > SQL 코드카타' 카테고리의 다른 글
MySQL 프로그래머스 | 언어별 개발자 분류하기 (GROUP_CONCAT, FIND_IN_SET 함수) (2) | 2024.09.30 |
---|---|
MySQL 프로그래머스 | 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (2) | 2024.09.25 |
MySQL 프로그래머스 | 입양 시각 구하기2 (SQL식 반복문 : RECURSIVE 재귀 가상테이블 만들기) (3) | 2024.09.23 |
MySQL 프로그래머스 | FrontEnd 개발자 찾기 (비트 연산자로 조인하기) (0) | 2024.09.20 |
MySQL 프로그래머스 | 상품을 구매한 회원 비율 구하기 (2) | 2024.09.19 |
댓글