문제를 보고,
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 문)에서도 사용할 수 있었다.
'SQL 문제' 카테고리의 다른 글
문제 50. 5월 식품들의 총매출 조회하기(난이도 4) (0) | 2024.07.24 |
---|---|
문제 48. 식품분류별 가장 비싼 식품의 정보 조회하기(난이도 10)(다중 컬럼 IN) (0) | 2024.07.24 |
문제 46. 모든 레코드 조회하기(난이도 1)(SELECT *) (0) | 2024.07.24 |
문제 45. 대여 기록이 존재하는 자동차(난이도 1) (0) | 2024.07.24 |
문제 45. 3월에 태어난 여성 회원 목록(난이도 1) (0) | 2024.07.24 |