본문 바로가기

SQL/프로그래머스

SQL 프로그래머스_6일차_4 IN, GROUP BY 최대 수 찾기

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

문제

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

 

테이블 소개

시도 코드 

1. 셀프 조인을 통해  즐겨찾기 수가 가장 많은 식당만 추출 ,단 조회는 되지만 오답이라고 뜬다

SELECT A.FOOD_TYPE,A.REST_ID,A.REST_NAME,B.FAVORITES
FROM REST_INFO A 
JOIN
    (SELECT FOOD_TYPE,REST_ID,REST_NAME,MAX(FAVORITES) AS FAVORITES  FROM REST_INFO
    GROUP BY FOOD_TYPE) B
ON A.REST_ID= B.REST_ID	
ORDER BY FOOD_TYPE DESC

2. GROUP BY 를 통해 SELECT에서 MAX를 찾아내 추출

SELECT FOOD_TYPE,REST_ID,REST_NAME,MAX(FAVORITES) AS FAVORITES  FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC

 

정답코드

- WHERE에서 서브쿼리를 사용 IN 활용

- 그룹별 최대 수 식당만 해당되는 행만 조회

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

 

시도 코드가 오답인 이유

- 아마 칼럼 당 여러 건이 나올 우려가 있어서