초이준철
물낌표
초이준철
전체 방문자
오늘
어제
  • 분류 전체보기 (59)
    • Python (6)
    • SQL (37)
    • 경험 (4)
    • Tableau (7)
      • Tableau 기본 (2)
      • Tableau 빅스데이터 22여름 대학생 TWBX (5)
    • 책으로 배우는 공부 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • MYSQL desc
  • TWBX 과제
  • MYSQL insert
  • 데이터 심리학
  • Mysql ifnull
  • 데이터 분석 방법
  • 데벨챌
  • MYSQL group by
  • 데이터리안
  • MYSQL 집계함수
  • mysql concat
  • TWBX 대학생
  • MYSQL 테이블 구조
  • 새빨간 거짓말 통계
  • mysql set
  • 물낌표
  • MYSQL CASE문
  • 통계책
  • mysql 문자열 자르기
  • mysql 문자열 연결

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
초이준철

?!

[MySQL] 프로그래머스 문제 풀이 (식품분류별 가장 비싼 식품의 정보 조회하기)
SQL

[MySQL] 프로그래머스 문제 풀이 (식품분류별 가장 비싼 식품의 정보 조회하기)

2024. 8. 16. 17:34

테이블 설명 및 문제

테이블에 대한 설명과 문제가 나와있습니다.

얼핏 보면 쉬운 문제 같지만, 계속 틀렸다고 나와서 머리가 아팠던 문제입니다 🥺

 

처음 작성한 쿼리
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('식용유', '과자', '국', '김치')
GROUP BY CATEGORY
ORDER BY MAX(PRICE) DESC;

 

쿼리에 대한 결괏값 (오답값)

 


무엇이 틀렸는지 한 번 확인해 볼게요.

우선, 아래는 아무런 CATEGORY만 필터링하고 다른 조건은 아무것도 주지 않은 결괏값이에요.

그리고 빨간색 네모박스들만 출력되면 정답인 샘이죠.

 

무엇이 틀렸는지 감이 오시나요?

 

추출되어야 할 결괏값과 제가 짠 쿼리에 대한 결괏값을 비교해 보면

PRODUCT_NAME에 대한 값이 다르다는 것을 알 수 있어요.

 

그 이유는 CATEGORY로 GROUP BY 한 뒤 SELECT에 MAX 함수를 사용할 때

MAX(PRICE) 값은 올바르게 나오고, 다른 CATEGORY 칼럼과 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 IN ('과자', '국', '식용유', '김치')
      		GROUP BY CATEGORY)
ORDER BY MAX_PRICE DESC;

 

카테고리와 금액은 확실하게 매치가 되지만 문제는 '제품 이름'이 매치가 안 되는 것이죠?

조건에 맞는 카테고리와 금액만 서브쿼리로 만든 뒤, WHERE 조건문을 통해서 FOOD_PRODUCT 테이블과 같은 가격을 추출하도록 설정하면 원하는 결괏값을 얻을 수 있어요.

 

 

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/131116?language=mysql 

 

프로그래머스

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

programmers.co.kr

 

저작자표시 (새창열림)
    'SQL' 카테고리의 다른 글
    • [MySQL] 프로그래머스 문제 풀이 (feat. GROUP_CONCAT, INTERSECT 활용)
    • [MySQL] HackerRank Pivot Table 문제 (CASE문, SET, 서브쿼리 활용)
    • [MySQL] SET을 통해 변수 사용하기
    • [MySQL] 기본키, 외래키 값 변경에 대하여 (feat. on update cascade)
    초이준철
    초이준철
    WNWA

    티스토리툴바