CodingTest/SQL 고득점 Kit

즐겨찾기가 가장 많은 식당 정보 출력하기

  • -
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/131123

 

프로그래머스

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

programmers.co.kr

 

정답

SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, B.FAVORITES
FROM REST_INFO AS A
INNER JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
      FROM REST_INFO
      GROUP BY FOOD_TYPE) as B
ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES = B.FAVORITES
ORDER BY 1 DESC;

 

풀이

진짜 간단한문제다!! 하면서 무지성으로 깝치며 풀었다가 틀린 문제다... 처음에는 아래와 같이 풀었었다.

SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY 1 DESC;

근데 이렇게 풀게 되면 FAVORITES 자체는 FOOD_TYPE별 max값이 잘 나오지만 REST_ID, REST_NAME는 그룹 조건에 없기 때문에 랜덤값이 나와 오류가 발생한다. 때문에 INNER JOIN 안에 서브쿼리로 따로 MAX(FAVORITES)를 뽑아주고 셀프 조인을 통해 확실하게 행을 선별해주었다.

교훈: 깝치지 말자!

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.