less than 1 minute read

📜문제Permalink


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

image

📜정답Permalink


    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

📜노트Permalink


처음엔

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

와 같이 작성을 했지만 오답이였다.
이유는 GROUP BY를 사용하면 쿼리순서 때문에MAX(FAVORITES)값이 아닌 분류된 값에서 상단에 있는 값을 조회하게 된다.
그러니 서브쿼리를 사용하여 조회를 해야한다.