본문 바로가기

Algorithm/Programmers

[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 즐겨찾기가 가장 많은 식당 정보 출력하기

문제

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

 

문제 풀이

  1. 음식종류별로 조회하기 위하여 GROUP BY로 묶는다.
  2. 즐겨찾기수가 가장 많은 식당을 구하기 위하여 max 함수로 조회한다.
  3. 음식종류별 즐겨찾기수가 가장 많은 식당만 뽑아낸 서브쿼리와 기존 쿼리를 JOIN하여 ID, 식당 이름을 조회한다.

 

전체 코드

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 1 DESC

 

728x90
728x90