CodingTest/SQL 고득점 Kit

서울에 위치한 식당 목록 출력하기

  • -
728x90

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

 

프로그래머스

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

programmers.co.kr

정답

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 절에 '%서울%'을 쓰게 되면 경기도 소재의 '최고서울갈비'와 같은 이름을 가진 음식점도 포함되기에 '서울%'로 설정해 주었다.  

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.