내배캠_Data_3기/SQL

[코딩연습]서울에 위치한 식당목록 출력하기

케일라(Data_3기) 2024. 9. 12. 15:53

문제

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

 REST_REVIEW 테이블은 다음과 같으며 REVIEW_ID은 리뷰ID, REST_ID은 식당 ID, MEMBER_ID은 회원 ID, REVIEW_SCORE은 점수, REVIEW_TEXT은 리뷰 텍스트, REVIEW_DATE은 리뷰 작성일을 의미한다.

 REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성하라. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬하라.

 

조건

  • 어떤 테이블에서 데이터를 뽑을 것인가 : REST_INFO, REST_REVIEW
  • 어떤 컬럼을 이용할 것인가 : REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, SCORE
  • 어떤 조건을 지정해야 하는가 : 리뷰 평균점수는 소수점 세 번째 자리에서 반올림
  • 어떤 함수(수식)을 이용해야 하는가 : JOIN, GROUP BY, HAVING, ORDER BY, ROUND

 

SELECT RR.REST_ID, RI.REST_NAME, RI.FOOD_TYPE, RI.FAVORITES, RI.ADDRESS, ROUND(AVG(REVIEW_SCORE),2) AS SCORE
FROM REST_REVIEW AS RR JOIN REST_INFO AS RI ON RR.REST_ID = RI.REST_ID
GROUP BY RR.REVIEW_ID
HAVING RI.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, RI.FAVORITES DESC