[MySQL, Lv.4] 서울에 위치한 식당 목록 출력하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 조건
- REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 출력하시오
- 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 하시오
- 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균 점수가 같다면 즐겨찾기 수를 기준으로 내림차순 정렬하시오.
문제 풀이
- 리뷰 평균 점수를 출력해야 하기 때문에 REST_INFO와 REST_REVIEW를 REST_ID를 이용해서 INNER JOIN을 진행함.
- 서울에 위치한 식당들의 데이터를 출력해야 하기 때문에 WHERE절에 LIKE를 이용해서 조건문을 생성함
- 해당 식당의 리뷰 평균 점수를 집계하기 위해서 GROUP BY절 사용
SELECT i.REST_ID AS "REST_ID",
i.REST_NAME,
i.FOOD_TYPE,
i.FAVORITES,
i.ADDRESS,
ROUND(AVG(r.REVIEW_SCORE),2) AS "SCORE"
FROM REST_INFO i
INNER JOIN REST_REVIEW r ON i.REST_ID = r.REST_id
WHERE i.ADDRESS LIKE '서울%'
GROUP BY REST_ID
ORDER BY SCORE DESC, FAVORITES DESC
해당 문제에서 주의해야 하는 점 -- test 데이터에만 집중하지 말고 다른 변수 상황을 고려하기
예시로 보여준 테스트 데이터에는 address가 '서울특별시'로 기재되어있다. 하지만 DB에 저장되어있는 address 데이터는 '서울특별시' '서울시' '서울 특별시'등 다양한 형태로 저장되어있을 가능성이 있기 때문에 이를 대비해서 쿼리를 작성해야 한다.
where address like '서울특별시%'로 하면 오답 처리가 되기 때문에 where address like '서울%'로 쿼리를 짜보자.