SELECT RI.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(RS.SCORE, 2) AS SCORE
FROM REST_INFO AS RI
RIGHT JOIN (
SELECT REST_ID, AVG(REVIEW_SCORE) AS SCORE
FROM REST_REVIEW
GROUP BY REST_ID
) AS RS ON RI.REST_ID = RS.REST_ID
WHERE RI.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, FAVORITES DESC;
풀이
이번 문제는 조인문 안에 서브쿼리를 넣어주었다. 서브쿼리에서는 음식점 아이디를 기준으로 GROUP BY를 썼는데 사실 난 통계학과라 허구한 날 쓰는 게 GROUP BY 혹은 PIVOT TABLE이라 이 문제가 더 쉬운 면이 있었다.
문제는 WHERE 조건절이다. 처음에는 WHERE 절을 LEFT(ADRESS, 5) = '서울특별시' 로 했었는데 문제는 주소가 '서울시'로 시작하는 것도 있었다. 문제 풀 때는 왜 안되지?라고 생각하면서 의문이었는데 알고 보니 당연한걸 내가 생각 못하고 있던 것이었다.
또 LIKE 절에 '%서울%'을 쓰게 되면 경기도 소재의 '최고서울갈비'와 같은 이름을 가진 음식점도 포함되기에 '서울%'로 설정해 주었다.