좋은 생각입니다. 그러나 group by를 foodtype으로 했을 때 restid, rest_name이 max(favorites)인 row인지 아닌지 정확히 확신할 수 없습니다.
그 이유는 group by를 foodtype으로 진행했을 때 max(favorites)값은 정확히 내가 원하는 foodtype의 favorites라고 확신할 수 있지만 restid, restname은 group by로 묶여지고 제일 첫번째 로우가 가져와지기 때문에 max(favorites)랑 restid, restname이 일치 안할 수도 있습니다.
때문에 아래와 같이 foodtype과 max(favorites)를 먼저 찾고 그것과 일치하는 restid와 rest_name을 join을 통해 찾을 수 있습니다.
select ri.food_type, ri.rest_id, ri.rest_name, ri.favorites
from rest_info as ri
join (select food_type, max(favorites) as 'maxfavor'
from rest_info
group by food_type
) as mr
on ri.food_type = mr.food_type and ri.favorites = mr.maxfavor
order by ri.food_type desc
https://school.programmers.co.kr/learn/courses/30/lessons/131116 <- 이 문제도 본 문제와 똑같은 유형인데 한번 생각해보면 좋을 것 같습니다
덕분에 배워갑니다
친절하고 자세히 설명해주셔서 감사합니다 ^^ 많이 도움되었습니다.
혹시 식당 아이디로 조인하면 문제되나요? ID는 exclusive한 값이라 저걸로 조인하려고 했는데.,,다들 음식 종류랑 즐겨찾기 수로 두셨네요..
아 이거군요,,