Mini

프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기 // GROUP BY 집계함수(MAX) 주의사항 본문

SQL 코테

프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기 // GROUP BY 집계함수(MAX) 주의사항

Mini_96 2023. 8. 6. 20:39

https://school.programmers.co.kr/learn/courses/30/lessons/131123

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

* GROUP BY MAX 주의사항

GROUP BY로 묶으면 가장 상단에 있는 데이터들을 임의로 가져온다.

제대로 가져오는 속성 : GROUP BY 기준값, 집계함수쓴 값(MAX)

ID, NAME은 즐찾이 최대값인 애들을 가져오는게 아니다!! / 임의의 값이다!

 

문제 : MAX()썻으니까 MAX인 ID, NAME을 출력해주겟지? -> X, 가장 상단의 데이터출력

FOOD_TYPE, MAX()컬럼에만 올바른 최대값이 출력됨. / 나머지 컬럼들은 임의의 데이터 정보임.

해결 : MAX()값은 정상이므로 -> 그때 MAX값에 해당하는 ID,NAME을 다시 찾아서 출력

 

 

 

*서브쿼리

 

문제 : 즐찾 230이 2개이면 모두 출력되버림 

해결 : FOOD_TYPE도 같이 검사

 

*정답코드

SELECT FOOD_TYPE,REST_ID,REST_NAME,FAVORITES
FROM REST_INFO 
WHERE (FOOD_TYPE, FAVORITES) IN
    (SELECT FOOD_TYPE, MAX(FAVORITES)
    FROM REST_INFO
    GROUP BY FOOD_TYPE)
ORDER BY FOOD_TYPE DESC