MYSQL 그룹별 최댓값 구할때 주의해야할 점

코딩테스트 연습 - 즐겨찾기가 가장 많은 식당 정보 출력하기 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

음식 종류별로 즐겨찾기 수가 가장 많은 음식점을 조회하는 간단한 문제

 

-- 코드를 입력하세요
SELECT food_type, rest_id, rest_name, max(favorites) as favorites from rest_info
group by food_type
order by food_type desc;

 

 

단순히 group by하고 max(favorites)하면 될줄 알았는데 그냥 틀리더라고

 

 

 

group by하는 순간 임의의 한 행으로 묶어버리더라고?

 

select * from rest_info
group by food_type;

 

 

 

 

 

그러다보니 일식집에서 favorites이 가장 큰 곳은 실제로 스시사카우스인데,

 

 

 

 

 

 

위 쿼리대로 하면... 하이가쯔네가 나오더라고

 

하이가쯔네는 favorite이 112인데... 안맞지

 

 

 

 

 

 

 

 

먼저 max(favorites)을 찾고, 이를 서브쿼리로 만들어서, 이 서브쿼리 테이블이랑, 원래 테이블을 합쳐가지고

 

이 max값과 일치하는 음식점을 찾는 방법으로 해결하자

 

-- 코드를 입력하세요
SELECT A.food_type, B.rest_id, B.rest_name, A.favorites FROM (SELECT food_type, max(favorites) as favorites from rest_info
group by food_type) A, REST_INFO B
WHERE A.food_type = B.food_type and A.favorites = B.favorites
ORDER BY A.food_type desc;

 

 

이러면 스시사카우스로 제대로 나옴

 

 

728x90