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

Soohyeon B·2022년 11월 3일
0

SQL

목록 보기
12/19

문제

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

-- 코드를 입력하세요
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC

틀렸다.
왜? FOOD_TYPE별 FAVORITES 수가 가장 많은 하나의 식당만 출력해야하는 조건을 무시했다.

어떻게 조건을 넣을까?

풀이 1- 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;

풀이 2 - JOIN함수, MAX함수 사용

전체 REST_INFO 테이블과 FOOD_TYPE, MAX(FAVORITES)값만 추출해서 만든 테이블을 JOIN해야 함

-- 코드를 입력하세요
SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITES
FROM REST_INFO A JOIN(
    SELECT FOOD_TYPE, 
    MAX(FAVORITES) AS FAVORITES FROM REST_INFO
    GROUP BY FOOD_TYPE) B
ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES = B.FAVORITES
ORDER BY A.FOOD_TYPE DESC
profile
하루하루 성장하는 BE 개발자

0개의 댓글