알고리즘/프로그래머스 풀이
[프로그래머스] 서울에 위치한 식당 목록 출력하기 (MySQL)
제로타이
2023. 2. 18. 18:29
목차
개요
코딩테스트 연습 - 서울에 위치한 식당 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
JOIN을 사용할 줄 알아야 한다. 두 테이블을 JOIN할 때는 각 테이블 별칭을 설정하고 합칠 때의 기준이 되는 키를 설정해준다.
INNER를 써도 되지만 쓰지 않아도 INNER로 인식한다. JOIN에 대해서는 더 공부하는 게 좋겠다.
GROUP BY를 써야 한다. '식당 별'로 리뷰의 평균을 내야 하기 때문이다.
GROUP BY를 쓸 때 조건절을 넣고 싶다면 HAVING을 써야 한다. 사용법은 동일!
문자열에 대해 조건을 걸 때는 LIKE를 쓴다. 이때 내가 원하는 문자가 아닌 문자열 부분에 대해서는 _나 %를 쓰는데 %는 문자열의 길이에 연연하지 않는 것이고, _는 내가 원하는 문자열의 길이를 지정할 수 있도록 해준다.
정렬은 ORDER BY이다. DESC로 내림차순으로 정렬한다. 콤마로 두번째 정렬 조건을 지정해줄 수 있다.
코드
SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(B.REVIEW_SCORE), 2) "SCORE"
FROM REST_INFO A
JOIN REST_REVIEW B ON A.REST_ID = B.REST_ID
GROUP BY B.REST_ID
HAVING A.ADDRESS LIKE "서울%"
ORDER BY AVG(B.REVIEW_SCORE) DESC, A.FAVORITES DESC
;