SQL

[프로그래머스] MySQL - 즐겨찾기가 가장 많은 식당 정보 출력하기

주스 JUICE 2022. 11. 2. 09:35
728x90

코딩테스트 연습 - 즐겨찾기가 가장 많은 식당 정보 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

 

 

 

 

처음 코드

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

 

 

정답 코드

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

 

출처 : https://inforyou.tistory.com/28
출처 : https://data-make.tistory.com/25

 

where절에서 in ( )으로 우선 그룹 별 최대 즐겨찾기 수인 식당을 뽑고,
그 데이터와 '일치하는 식당'만 추려서 조회해야 한다!

 

 

(서브쿼리)

1. FOOD_TYPE을 GROUP BY로 묶기

2. FOOD_TYPE과 MAX(FAVORITES)를 SELECT하여 FOOD_TYPE별로 묶인 가장 최대 즐겨찾기수를 나타낸다

(본문)

3. WHERE ~ IN을 사용하여 서브쿼리문과 일치하는 하나 이상의 값을 찾는다

4. FOOD_TYPE, REST_ID, REST_NAME, FAVORITES을 조회한다

5. FOOD_TYPE을 내림차순으로 정렬한다

728x90