728x90
문제
- 문제 설명
다음은 식당의 정보를 담은 REST_INFO 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.
Column nameTypeNullableREST_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_IDREST_NAMEFOOD_TYPEVIEWSFAVORITESPARKING_LOTADDRESSTEL00001 은돼지식당 한식 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_TYPEREST_IDREST_NAMEFAVORITES한식 00001 은돼지식당 734 일식 00004 스시사카우스 230 양식 00003 따띠따띠뜨 102
2. 코드
SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITES
FROM REST_INFO AS A
WHERE A.FAVORITES = (SELECT
MAX(B.FAVORITES)
FROM REST_INFO AS B
INNER JOIN REST_INFO
ON A.food_type = B.food_type)
GROUP BY A.FOOD_TYPE
ORDER BY FOOD_TYPE DESC
FROM REST_INFO AS A
WHERE A.FAVORITES = (SELECT
MAX(B.FAVORITES)
FROM REST_INFO AS B
INNER JOIN REST_INFO
ON A.food_type = B.food_type)
GROUP BY A.FOOD_TYPE
ORDER BY FOOD_TYPE DESC
3. 회고
Q. 문제를 보고 든 생각
- FAVORITES 즐겨 찾기 최댓값를 갖고 있는 컬럼만 뽑아내면 되겠다 싶었다.
- 그러기 위해선 서브 쿼리로 FAVORITES의 최댓값을 갖고 있는 컬럼와 현재 갖고 있는 FAVORITES의 컬럼을 비교하면 되겠다 싶었고 그에 맞는 코드이다.
4. 고쳐야 할점
SQL에 대해 조금더 공부해야될것같다.
728x90
'SQL' 카테고리의 다른 글
프로그래머스 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.02.09 |
---|---|
프로그래머스 조건별로 분류하여 주문상태 출력하기(MYSQL) (0) | 2023.02.08 |
프로그래머스 상품 별 오프라인 매출 구하기 (0) | 2023.02.01 |
프로그래머스 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2023.02.01 |
프로그래머스 조건에 맞는 도서와 저자 리스트 출력하기 (2) | 2023.01.29 |