2024년 01월 03일

1. 문제

2. 나의 풀이

SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
  1. SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) FROM REST_INFO : REST_INFO 테이블의 FOOD_TYPE, REST_ID, REST_NAME, FAVORITES 컬럼을 조회하는데 MAX 함수를 사용하여 FAVORITES 컬럼 레코드의 최대 값을 가진 레코드를 조회한다.
  2. GROUP BY FOOD_TYPE : FOOD_TYPE을 기준으로 그루핑한다.
  3. ORDER BY FOOD_TYPE DESC : FOOD_TYPE을 기준으로 내림차순 정렬한다.

3. 다른 풀이

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
  1. SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO : REST_INFO 테이블의 FOOD_TYPE, REST_ID, REST_NAME, FAVORITES 컬럼을 조회한다.
  2. WHERE FAVORITES IN (서브쿼리) : 서브쿼리로 음식 종류별로 가장 별점이 높은 별점을 찾아낸 후 WHERE절의 IN을 활용하여 FAVORITES 컬럼의 일치하는 레코드를 조회한다.
  3. GROUP BY FOOD_TYPE : FOOD_TYPE을 기준으로 그루핑한다.
  4. ORDER BY FOOD_TYPE DESC : FOOD_TYPE을 기준으로 내림차순 정렬한다.