https://school.programmers.co.kr/learn/courses/30/lessons/131123
* 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
'SQL 코테' 카테고리의 다른 글
프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 // 문자열포함검사는 LIKE , 카운팅은 COUNT(*) (0) | 2023.08.06 |
---|---|
프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기 // 서브쿼리, 문자열비교는 '' (0) | 2023.08.06 |
프로그래머스 성분으로 구분한 아이스크림 총 주문량 // GROUP BY (0) | 2023.08.06 |
프로그래머스 없어진 기록 찾기 // LEFT JOIN VS INNER JOIN (0) | 2023.08.06 |
프로그래머스 있었는데요 없었습니다 // JOIN 기본값==INNER JOIN (0) | 2023.08.06 |