👉 https://school.programmers.co.kr/learn/courses/30/lessons/131123
🤔 문제 분석
1) REST_INFO 테이블에서
2) 음식종류별로 즐겨찾기수가 가장 많은 식당의
3) 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요.
4) 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
💡 풀이
SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITES
FROM REST_INFO AS A
JOIN
(SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
) AS B
ON A.FAVORITES = B.FAVORITES
GROUP BY A.FOOD_TYPE
ORDER BY A.FOOD_TYPE DESC
❗BEFORE U GO
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC;
이렇게 작성할 경우 왜 안될까?
'FOOD_TYPE'으로 GROUP BY 할 경우,
REST_ID를 탐색할 때 한식의 맨 첫 번째 데이터, 일식의 맨 첫 번째 데이터 등이 출력된다.
REST_NAME 역시 마찬가지 이며
MAX(FAVORITES)은 전체 favorites 데이터 중에서 가장 큰 값을 단순히 붙이는 형태로 출력이 된 것이다.
REST_ID, REST_NAME 등은 가장 맨 위의 것이 출력 되었고
(favorites은 그냥 favorites이 가장 많은 것을 별개로 붙여준 형태로 출력된 것이다.)
favorites이 가장 많은 rest_id와 rest_name을 함께 찾아주어어야 하기때문에
조건에 맞는 것을 찾은 다음에 join으로 붙여주어야 한다.
'코딩테스트 > 프로그래머스 SQL' 카테고리의 다른 글
[GROUP BY] 28. 고양이와 개는 몇 마리 있을까 (0) | 2022.11.18 |
---|---|
[GROUP BY] 27. 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2022.11.16 |
[GROUP BY] 25. 성분으로 구분한 아이스크림 총 주문량 (0) | 2022.11.16 |
[GROUP BY] 24. 진료과별 총 예약 횟수 출력하기 (0) | 2022.11.15 |
[SUM, MAX, MIN] 23. 중복 제거하기 (0) | 2022.11.15 |
댓글