오늘 ONEUL
오늘의 개발
오늘 ONEUL
전체 방문자
오늘
어제
  • 오늘의 개발 (248)
    • 📝 TIL (121)
    • 💡 Projects (6)
      • 드로잉 게임 [눈치 코치 캐치!] (4)
      • 익명고민상담소 [대나무숲] (2)
    • 🌎 Web (47)
      • Spring (3)
      • Java (14)
      • JavaScript (16)
      • CSS (10)
      • HTML (4)
    • 📚 Database (7)
    • 👾 Trouble Shooting (3)
    • 📊 Algorithm&SQL (39)
    • 😺 Git (1)
    • 📖 Books (7)
      • 자바 객체 지향의 원리와 이해 (7)
    • 📁 ETC (2)
    • 되돌아보기 (15)

블로그 메뉴

  • 😺 Github
  • 🍀 NAVER Blog

인기 글

최근 댓글

최근 글

태그

  • JavaScript
  • Til
  • 항해99
  • MySQL
  • 알고리즘
  • 자바스크립트
  • Java
  • 자바
  • 프로그래머스
  • Algorithm

티스토리

hELLO · Designed By 정상우.
오늘 ONEUL

오늘의 개발

[MySQL/프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기
📊 Algorithm&SQL

[MySQL/프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기

2023. 5. 11. 23:44

 

문제

 

 

 

풀이

(1) 문제 분석하기

  • 식품분류별 가격이 제일 비싼 식품의 정보
    ⇒ GROUP BY를 이용하여 식품분류별로 묶고, MAX(PRICE)로 제일 비싼 식품 조회
  • 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력
    ⇒ HAVING 식품분류 IN ('과자', '국', '김치', '식용유')
  • 식품 가격을 기준으로 내림차순 정렬
    ⇒ ORDER BY 식품 가격 DESC

 

(2) 쿼리 구현하기

🔸 첫 번째 시도

SELECT CATEGORY, MAX(PRICE) AS 'MAX_PRICE', PRODUCT_NAME
FROM FOOD_PRODUCT
GROUP BY CATEGORY
HAVING CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY MAX_PRICE DESC

 

결과는?!

후..

아니 왜지?!

답답한 마음에 FOOD_PRODUCT 테이블 전체를 보면서 내가 작성한 쿼리와 하나하나 대조해보았다.
내가 작성한 쿼리의 실행결과는 다음과 같다.

가장 비싼 식용유의 이름이 '맛있는콩기름' 으로 나온다.
하지만 실제로 확인해보면?

 

가격 8950원의 식용유 이름은 '맛있는마조유'이다..!

아니 이게 왜 다르게 나오는거야????😦
혼란스런 와중 다음과 같은 댓글을 보게 되었다.

 

그렇다.
이 문제는 GROUP BY로 뽑아낸 결과 중 가장 큰 값(MAX)의 행을 가져와야 한다.
그러나 내가 작성한 쿼리에서 PRODUCT_NAME은 그저 PRODUCT_ID 순서로 첫 번째 값을 가져오고 있었다.

 

🔸 두 번째 시도 (정답)

SELECT CATEGORY, PRICE AS 'MAX_PRICE', PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE)
IN (SELECT CATEGORY, MAX(PRICE)
    FROM FOOD_PRODUCT
    GROUP BY CATEGORY
    HAVING CATEGORY IN ('과자', '국', '김치', '식용유'))
ORDER BY MAX_PRICE DESC

서브쿼리로 WHERE 절에서 IN을 이용하여 가장 비싼 식품의 식품 분류와 가격을 먼저 조회하고,
해당하는 PRODUCT_NAME을 출력하는 것으로 해결!

 

 

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

저작자표시 비영리 변경금지 (새창열림)

'📊 Algorithm&SQL' 카테고리의 다른 글

[MySQL/프로그래머스] 보호소에서 중성화한 동물  (0) 2023.05.09
[MySQL/프로그래머스] 자동차 대여 기록에서 장기/단기 대여 구분하기  (0) 2023.05.07
[MySQL/프로그래머스] 없어진 기록 찾기  (0) 2023.05.03
[MySQL/프로그래머스] 조건에 부합하는 중고거래 상태 조회하기  (0) 2023.04.30
[MySQL/프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기  (0) 2023.04.29
    오늘 ONEUL
    오늘 ONEUL
    Backend Engineer ㅣ 어제보다 나은 오늘, 재밌는 건 오늘부터!

    티스토리툴바