Coding Test/SQL
[Programmers] 즐겨찾기가 가장 많은 식당 정보 출력하기 - 131123
ro_rdil_31
2024. 10. 2. 12:43
728x90
SELECT DISTINCT( ) 를 해도 같은 단어가 두 개 나와서 답이 틀렸다.
왜 그런지 이유를 찾아보니 distinct는 뒤에 따라 붙는 모든 컬럼들의 중복되는 '조합' 중 하나만 출력한다.
Question
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
Point
- WHERE 절 서브쿼리
- 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