[프로그래머스][SQL] 즐겨찾기가 가장 많은 식당 출력하기

Eunding·2024년 2월 19일
0

SQL 고득점 Kit

목록 보기
23/62

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

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

문제

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

예시

풀이

처음에 문제를 보고 FOOD_TYPE만 GROUP BY 절로 묶어서 풀었고 정답도 나오길래 맞은 줄 알았더니 틀렸다.
알고보니 GROUP BY로 묶으면 가장 상단에 있는 데이터들을 임의로 가져오는데 우연히 정답이랑 결과가 같은거였지, 즐겨찾기가 가장 많은 식당은 아니었다.

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;
  • 중요한 점은 GROUP BY 후 바로 MAX를 하면 최댓값이 아니라 테이블의 최상단 값이 나와서 서브쿼리로 최댓값을 따로 찾아줘야한다. 그 이유는 SQL 쿼리의 진행 순서 때문이라고 한다.
  1. 서브쿼리로 음식 종류별 즐겨찾기 수 최댓값을 찾는다.
  2. 전체 테이블을 돌면서 1번에서 찾은 FOOD_TYPE, FAVORITES 같은 식당을 찾는다.
  3. FOOD_TYPE 내림차순 정렬

참고)
https://monawa.tistory.com/126
https://jaehwaseo.tistory.com/24

profile
안녕하세요~

0개의 댓글

관련 채용 정보