-
[코딩테스트] 프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기(MySQL, Level4)코딩테스트/프로그래머스 2022. 12. 7. 23:42728x90
안녕하세요 오늘 출근길에 푼 SQL문제입니다.
오늘도 평소 풀던 SQL문제에 비하면 조금은(사실 많이) 까다로웠다고 생각합니다만 그래도 정답입니다를 받았네요
JOIN을 저는 써서 풀었는데 더 간단한 방법이 있을수도 있으니 다른 정답과도 비교하시며~ 쏙쏙필요한것만 빨아가시길 바라겠습니다. :D
이때의 쾌감이란~ 오늘도 열심히 코딩하며 제 자신을 성장시킬 수 있는 기회가 됐으면 좋겠습니다.
문제 만나보시죠~
https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
그리고 제가 작성한 쿼리입니다.
-- 코드를 입력하세요 SELECT fp.category, fp.price as max_price, fp.product_name from food_product as fp join (select category, max(price) as maxprice from food_product group by category) as fa on fp.category=fa.category where fp.price=fa.maxprice and fp.category in('과자', '국', '김치', '식용유') order by max_price desc
이제 한줄 한줄씩 보겠습니다.
먼저 뽑아야되는 내용인 CATEGORY, MAX PRICE, PRODUCT_NAME입니다.
아마 여기가 핵심일듯한데 join 부분입니다.
join시에 저는 기존 테이블과 기존테이블을 통해 만든 새로운 테이블을 join시켰습니다.
새로운 테이블이 가진 데이터는 category, price(최대가격)인데 group by category를 시킨 데이터입니다.
즉 category별로 최대의 가격을 가진 테이블입니다.
해당 테이블을 category값을 기준으로 join해주고
fa table이 가진 price가 최대값이기에 해당 price와 fp table의 가격과 같은 리스트를 뽑아주면 되겠습니다.
또한 문제에서 category는 '과자', '국', '김치', '식용유' 만 뽑아달라기에 in문을 통해 필터링 해주겠습니다.
이상입니다.
감사합니다. :D
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] 프로그래머스 - 우유와 요거트가 담긴 장바구니(MySQL, Level4) (0) 2022.12.09 [코딩테스트] 프로그래머스 - 큰 수 만들기(Java, Level2, 실패코드) (0) 2022.12.09 [코딩테스트] 프로그래머스 - 124 나라의 숫자(Java, Level2) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 5월 식품들의 총매출 조회하기(MySQL, Level4) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 쿼드압축 후 개수 세기(Java, Level2) (0) 2022.12.07