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

dasd412·2023년 2월 8일
0

SQL

목록 보기
7/9

문제

REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

코드

SELECT origin.FOOD_TYPE, origin.REST_ID,origin.REST_NAME, origin.FAVORITES
FROM 
(SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO
GROUP BY FOOD_TYPE) AS grouped
INNER JOIN REST_INFO AS origin
ON origin.FOOD_TYPE=grouped.FOOD_TYPE
AND origin.FAVORITES=grouped.FAVORITES 
ORDER BY origin.FOOD_TYPE DESC;

알게 된 것

select에서 여러개의 칼럼을 조회할 때 group by를 사용한다면,
group by에 해당 칼럼들을 명시해줘야 한다.

예를 들어 코드가 다음과 같다면,

select r.FOOD_TYPE, r.REST_ID, MAX(r.FAVORITES) FROM  REST_INFO AS R 
GROUP BY r.FOOD_TYPE;

원래는 mysql 자체에서 에러를 뱉어야 한다. 왜냐하면 REST_ID는 그룹화가 안되어있기 때문이다.

그렇다고 해서 group by r.FOOD_TYPE, r.REST_ID로 하면 원하는 그룹핑이 되지 않는다. 그래서 정답 코드처럼 서브 쿼리와 조인을 이용했다.

해설 참고

https://school.programmers.co.kr/questions/38703

profile
아키텍쳐 설계와 테스트 코드에 관심이 많음.

0개의 댓글