[코드카타] - SQL 즐겨찾기가 가장 많은 식당 정보 출력하기

seonyoung·2024년 9월 24일
0

📁 문제 설명

다음은 식당의 정보를 담은 REST_INFO 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.

📁 문제

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

💡 내가 적은 오답

SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
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)
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
  • 다른 사람들은 서브쿼리를 사용했으며, 결과를 비교해보니 출력값이 똑같이 나왔음
  • 📌 왜 MAX는 틀렸고, 서브쿼리를 이요해야하는지 찾아보니 GROUP BY로 묶으면 가장 상단에 있는 데이터들을 임의로 가져오기 때문에 결과물이 같은 거 같지만 이는 가장 상단에 식당 정보를 가져왔던 것이 우연히 같았던 것이지 가장 즐겨찾기가 많은 식당이 아니라고 함
profile
원하는 바를 이루고 싶은 사람입니다.

0개의 댓글