ror_coding

[Programmers] 즐겨찾기가 가장 많은 식당 정보 출력하기 - 131123 본문

Coding Test/SQL

[Programmers] 즐겨찾기가 가장 많은 식당 정보 출력하기 - 131123

ro_rdil_31 2024. 10. 2. 12:43
728x90

DISTINCT( ) 사용 시 유의점 !

SELECT DISTINCT( ) 를 해도 같은 단어가 두 개 나와서 답이 틀렸다.

왜 그런지 이유를 찾아보니 distinct뒤에 따라 붙는 모든 컬럼들의 중복되는 '조합' 중 하나만 출력한다.

 

 

Question

 

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

 

 

Point

 

  1. WHERE 절 서브쿼리
  2. SELECT DISTINCT( FOOD_TYPE ) 을 해도 '한식'이 두 개 나옴 -> 따라서 GROUP BY FOOD_TYPE으로 하나만 출력.

 

Code (After 25.06.)

 

SELECT FOOD_TYPE
        , REST_ID
        , REST_NAME
        , FAVORITES
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RN
        FROM REST_INFO) A
WHERE RN = 1
ORDER BY 1 DESC

 

Code (Before)

 

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

 

now me

On my github

 

728x90