즐겨찾기가 가장 많은 식당 정보 출력하기

수이·2025년 3월 14일
0

🟢 코드카타 / SQL

목록 보기
48/81
post-thumbnail

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

조건정리
1. 음식 종류별로 즐겨찾기수가 가장 많은 식당
2. 음식종류, ID, 식당이름, 즐겨찾기수 조회
3. 음식 종류 기준 내림차순 정렬

풀이
1. 가장 많이 > 를 보자마자 RANK or ROW NUMBER써야겠다고 생각

SELECT FOOD_TYPE, 
       REST_ID, 
       REST_NAME,
       FAVORITES,
       ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RNK
FROM REST_INFO
  1. 여기서 1등만 뽑고 음식종류, ID, 식당이름, 즐겨찾기수 조회 + 정렬하면 끝
SELECT FOOD_TYPE,
       REST_ID,
       REST_NAME,
       FAVORITES
FROM
(SELECT FOOD_TYPE, 
       REST_ID, 
       REST_NAME,
       FAVORITES,
       ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RNK
FROM REST_INFO)a
WHERE RNK = 1
ORDER BY FOOD_TYPE DESC

풀이변형
WITH 써서 풀어보기😀

WITH rnk_fav AS
(
SELECT *,
       ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RNK
FROM REST_INFO
)

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM rnk_fav
WHERE RNK = 1
ORDER BY FOOD_TYPE DESC

다른사람 풀이

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

나는 아직 이렇게는 쓰기 어려운 것 같다
WHERE 절에서 서브쿼리를 쓰는 개념이 아직 어려움

0개의 댓글

관련 채용 정보