[PRO] 즐겨찾기가 가장 많은 식당 정보 출력하기 - Lv3

vvo_ter·2023년 10월 31일
0

SQL 고득점 Kit

목록 보기
6/24
post-custom-banner

💻 SQL 고득점 Kit > GROUP BY > 문제


✏️ 풀이

  • 문제: 음식종류별로 즐겨찾기 수가 가장 많은 식당 조회하기

    • 즐겨찾기 수가 가장 많은 식당 조회하기
    • 음식종류별로 그룹화하기
  • 단순히 GROUP BYMAX만을 사용하니 오답이 떴다.

    • 그 이유GROUP BY로 묶고 나서 SELECT 하면 가장 상단에 있는 데이터들을 임의로 가져오기 때문이다.

    • 이는 쿼리 실행 순서와 관련이 있다.
      : FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT

  • 서브쿼리로 최댓값을 찾은 후 비교하여 풀어야 한다.

    • 음식종류별로 최대 즐겨찾기 수 조회하기 - 서브쿼리
    • 즐겨찾기 수가 최대 즐겨찾기 수랑 같은 거 조회하기 - 비교

👉 제출 코드

  • SUBQUERY
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FAVORITES = (SELECT MAX(FAVORITES)
                  FROM REST_INFO AS R
                  WHERE R.FOOD_TYPE = REST_INFO.FOOD_TYPE)
ORDER BY FOOD_TYPE DESC
  • JOIN
SELECT R.FOOD_TYPE, R.REST_ID, R.REST_NAME, R.FAVORITES
FROM REST_INFO AS R JOIN (
    SELECT FOOD_TYPE, MAX(FAVORITES) AS MAXFAV
    FROM REST_INFO
    GROUP BY FOOD_TYPE
) AS X
ON R.FOOD_TYPE = X.FOOD_TYPE AND R.FAVORITES = X.MAXFAV
ORDER BY R.FOOD_TYPE DESC
  • WHERE IN
    : 주어진 집합 중 일치하는 레코드를 검색한다.
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
profile
's Coding Memory
post-custom-banner

0개의 댓글