[MySQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 - GROUP BY

Saemi Min·2023년 2월 18일
0

MySQL

목록 보기
12/21
post-thumbnail

문제

해당 문제 링크

정답

내 정답

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

다른 사람 정답

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

풀이

처음 작성했던 코드는 아래와 같다. 하지만 실행했을 때 좋아요 수와 식당 이름이 매칭되지 않았다.
이는 즐겨찾기 수만 큰 걸 가져오고, 식당 이름은 순서 중 가장 앞에 있는 것을 가져오는 것이었다.

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

서브 쿼리를 사용하여 음식 종류별 최대 즐겨찾기가 가장 많은 식당을 뽑아줘야했다.

(SELECT MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE)

하지만 이렇게 해도,

한식에서 중복되는 테이블이 나왔다. 한식과 일식의 가장 큰 수가 230으로 동일해서 나온 것 같았다.. 그래서 밖에도 그룹화를 작성해주니 해결되었다.

더 좋은 코드는 없을까 싶어서 참고해보니 나와 같이 서브쿼리문을 작성한 것은 동일하지만, WHERE 조건을 이용하여 그에 일치하는 즐겨찾기 수와 식당 이름만 맞을 경우 조회되도록 한 것이다. 그룹화를 두 번 중복하지 않고 해결하는 방법도 알 수 있게 되었다.

profile
I believe in myself.

0개의 댓글