Seung's Learning Record

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

프로그래밍/SQL

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

70_0ewd 2024. 2. 22. 00:46

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

소요시간 :  14분
사용한 풀이법 : JOIN, GROUP BY


풀이 과정

1. 두 테이블을 REST_ID를 통해 JOIN
2. 식당 주소가 서울로 시작하는 곳을 조건으로 거르기
3. 같은 식당끼리 그룹화
4. 해당 식당의 점수들을 평균내기
5. ROUND()함수를 통해 소수점 셋째자리에서 반올림 시켜주기

작성 코드

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

피드백

1. 집계 함수를 쓸 때는 어떠한 것을 대상으로 집계를 내리는지 꼭 생각해보자. 처음에는 GROUP BY를 안써서 계속해서 오답 처리가 됐었다. 해당 문제같은 경우 같은 ID를 지닌 식당끼리 묶어서 리뷰 점수를 평균 내어야 했어서 GROUP BY를 쓴다는 걸 기억하자.

2. 이건 좀 에바긴한데 괜히 정확하게 하면 좋지하고 LIKE '서울특별시%' 했다가 틀렸다. 그냥 서울시로만 되어있는게 있던듯하다. '도시명 좀 하나로 좀 통일해두지..'하면서 꿍시렁 거리게 만든 오답이었다.