문제 설명
다음은 식당의 정보를 담은 REST_INFO 테이블입니다. REST_INFO 테이블은 다음과 같으며,
REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.
Column name | Type | Nullable |
REST_ID | VARCHAR(5) | FALSE |
REST_NAME | VARCHAR(50) | FALSE |
FOOD_TYPE | VARCHAR(20) | TRUE |
VIEWS | NUMBER | TRUE |
FAVORITES | NUMBER | TRUE |
PARKING_LOT | VARCHAR(1) | TRUE |
ADDRESS | VARCHAR(100) | TRUE |
TEL | VARCHAR(100) | TRUE |
문제
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
예시
REST_INFO 테이블이 다음과 같을 때
REST_ID | REST_NAME | FOOD_TYPE | VIEWS | FAVORITES | PARKING_LOT | ADDRESS | TEL |
00001 | 은돼지식당 | 한식 | 1150345 | 734 | N | 서울특별시 중구 다산로 149 | 010-4484-8751 |
00002 | 하이가쯔네 | 일식 | 120034 | 112 | N | 서울시 중구 신당동 375-21 | NULL |
00003 | 따띠따띠뜨 | 양식 | 1234023 | 102 | N | 서울시 강남구 신사동 627-3 1F | 02-6397-1023 |
00004 | 스시사카우스 | 일식 | 1522074 | 230 | N | 서울시 서울시 강남구 신사동 627-27 | 010-9394-2554 |
00005 | 코슌스 | 일식 | 15301 | 123 | N | 서울특별시 강남구 언주로153길 | 010-1315-8729 |
SQL을 실행하면 다음과 같이 출력되어야 합니다.
FOOD_TYPE | REST_ID | REST_NAME | FAVORITES |
한식 | 00001 | 은돼지식당 | 734 |
일식 | 00004 | 스시사카우스 | 230 |
양식 | 00003 | 따띠따띠뜨 | 102 |
풀이
1. 음식종류별로 즐겨찾기수가 가장 많은 식당
- 서브쿼리를 사용해 음식종류별 가장 큰 즐겨찾기 수를 구한다.
- GROUP BY를 통해 음식종류별 좋아요수가 위 서브쿼리에서 구한 가장 큰값의 즐겨찾기 수와 일치하는 행의 정보를 출력한다.
2. 음식 종류를 기준으로 내림차순 정렬
- ORDER BY 컬럼명 DESC를 통해 내림차순 정렬
TIP) 단순히 SELECT문에서 MAX(FAVORITES)를 수행하면 음식 종류별 가장 많은 즐겨찾기 수를 구하는 것이지 가장 많은 즐겨찾기 수의 식당 정보를 구하는 것이 아니다.
쿼리문
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
'SQL > Programmers(MYSQL)' 카테고리의 다른 글
[MYSQL] 헤비 유저가 소유한 장소 (프로그래머스/Level 3) (0) | 2023.02.17 |
---|---|
[MYSQL] 조건별로 분류하여 주문상태 출력하기 (프로그래머스/Level 3) (0) | 2023.02.17 |
[MYSQL] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (프로그래머스/Level 3) (0) | 2023.02.17 |
[MYSQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (프로그래머스/Level 3) (2) | 2023.02.17 |
[MYSQL] 대여 기록이 존재하는 자동차 리스트 구하기 (프로그래머스/Level 3) (0) | 2023.02.17 |