[Programmers] 즐겨찾기가 가장 많은 식당 정보 출력하기

HAHAHELLO·2025년 3월 24일

SQL

목록 보기
13/17

Lv.3 즐겨찾기가 가장 많은 식당 정보 출력하기

문제

REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

예제

나의 풀이

SELECT 절에서 FAVORITES에 서브쿼리를 사용하며 결과값이 여러개가 나오기 때문에 사용할 수 없다. 따라서 WHERE절에서 서브쿼리를 사용하여 FAVORITES가 가장 많은 것만 추출하도록 조건을 걸었다.
하지만 FOOD_TYPE별로 FAVORITES가 가장 큰 레스토랑을 찾기 위해 아래 코드를 사용하면FAVORITES 값이 동일한 경우, 다른 FOOD_TYPE을 가진 레스토랑이 결과에 포함되는 문제가 발생한다.

따라서 GROUP BY FOOD_TYPE을 한번 더 사용하던지 다른 풀이 처럼 조건을 걸어서 쿼리를 사용해야 FOOD_TYPE 별로 하나의 레스토랑만 선택할 수 있다.

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

다른 풀이

SELECT
	FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM 
	REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN (SELECT
						MAX(FAVORITES)
	 				FROM
						REST_INFO
	 				GROUP BY 
						FOOD_TYPE)
ORDER BY
	FOOD_TYPE DESC;
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글