학이시습

[프로그래머스] 4단계_서울에 위치한 식당 목록 출력하기 (Oracle) 본문

Coding test/Programmers

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

dbswndud 2025. 4. 10. 00:06


문제 링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

다음은 식당의 정보를 담은 REST_INFO 테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.

 

작성한 코드

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

 

풀이

  • 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소 그리고 리뷰 평균 점수를 반올림하여 SELECT합니다.
  • REST_INFO 테이블과 REST_REVIEW 테이블을 REST_ID 기준으로 조인합니다.
  • WHERE절을 이용해 서울에 위치한 식당을 조회합니다.
  • 집계함수를 사용했기 때문에 나머지 열을 GROUP BY로 묶어줍니다.
  • 평균 점수를 기준으로 내림차순, 즐겨찾기 순으로 내림차순 해주면 끝!

 

사용한 함수

ROUND()

반올림 함수

ROUND(반올림할 숫자, 반올림할 소숫점 자리)  -- 반올림할 소숫점 자리까지 나온다고 생각하면 편안

 

AVG()

평균을 구하는 함수

AVG(열 이름)  -- 열의 평균을 구함

 

실행 결과