SQL 문제
문제 47. (중요)즐겨찾기가 가장 많은 식당 정보(다중 컬럼 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 문)에서도 사용할 수 있었다.