본문 바로가기
공부 일지/문제풀이

[프로그래머스] 서울에 위치한 식당 목록 출력하기(MySQL)

by Joshbla 2023. 11. 21.

코딩테스트 연습 - 서울에 위치한 식당 목록 출력하기

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

 

프로그래머스

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

programmers.co.kr

문제 설명


문제 풀이

생각 과정

우선 테이블이 두개이므로 JOIN을 사용하자

SELECT 
FROM REST_INFO AS I
JOIN REST_REVIEW AS R
ON I.REST_ID = R.REST_ID

그리고 원하는 결과값들을 SELECT에 적어준다.

조건으로 있는 주소가 서울로 시작해야한다는 것도 작성해준다.

SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS
FROM REST_INFO AS I
JOIN REST_REVIEW AS R
ON I.REST_ID = R.REST_ID
WHERE ADDRESS LIKE '서울%'

 

이제 리뷰 평균점수를 구해야한다.

여기서 GROUP BY로 같은 식당ID면 그룹화 시켜주고 그 그룹들의 리뷰평균을 구하면 될 것이다.

SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, 
ROUND(AVG(R.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO AS I
JOIN REST_REVIEW AS R
ON I.REST_ID = R.REST_ID
WHERE ADDRESS LIKE '서울%'
GROUP BY REST_ID

 

그리고 마지막으로 정렬조건을 작성해주면 끝이다.

 

구현

SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, 
ROUND(AVG(R.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO AS I
JOIN REST_REVIEW AS R
ON I.REST_ID = R.REST_ID
WHERE ADDRESS LIKE '서울%'
GROUP BY REST_ID
ORDER BY SCORE DESC, FAVORITES DESC;

 

LEVEL4의 난이도라길래 겁먹었는데 LEVEL1의 문제들에서 사용한 것을 다 모아놓은 느낌이라서

크게 어려운 문제는 아니었던 것 같다.