SQL 문제

문제 47. (중요)즐겨찾기가 가장 많은 식당 정보(난이도 10)(다중 컬럼 IN)

kagan-draca 2024. 7. 24. 16:38

 

문제를 보고,

 

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FAVORITES DESC

 

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

로 코드를 실행 및 제출해보았지만, 정답과는 거리가 멀었다.

 

SELECT MAX(FAVORITES)를 사용할 경우 FAVORITES의

가장 큰 값은 나왔지만, FOOD_TYPE, REST_ID, REST_NAME은

GROUP BY로 묶인 그룹 중에 가장 먼저 있는 튜플 값이 출력 됐다.

 

그래서, 2중 SELECT문을 사용해야 한다는 사실은 알게 됐지만

어느 컬럼명으로 어떻게 SELECT문을 작성해야할지 감이 안 왔다...

 

다른 사람의 정답 코드를 본 결과

 

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

 

위와 같이 IN 함수 내부에 SELECT 문을 작성한 걸 볼 수 있다.

또한, (컬럼명, 컬럼명) IN(~~~~)로 다중 컬럼 IN을 사용한걸 볼 수 있다.

 

다중 컬럼 IN을 사용하면 

 

 

처럼 사용할 수 있고, 

 

 

서브쿼리(2중 SELECT 문)에서도 사용할 수 있었다.