서울에 위치한 식당 목록 출력하기

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

서울에 위치한 식당 목록 출력하기Lv.4

131118

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

해설

REST_INFO 테이블과 REST_REVIEW테이블을 조인할 수 있는 REST_ID 컬럼을 기준으로 조인합니다.

평균을 구하는 AVG 함수와 GROUP BY 절을 사용합니다.

  • Name
    SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(B.REVIEW_SCORE),2) AS SCORE
    Type
    Description

    필요한 컬럼값과 REVIEW_SCORE의 평균값을 소수 둘째자리까지 구합니다.

  • Name
    FROM REST_INFO A
    Type
    Description

    데이터를 조회할 테이블 REST_INFO을 지정합니다.

  • Name
    JOIN REST_REVIEW B
    Type
    Description

    조인할 테이블 REST_REVIEW을 지정합니다.

  • Name
    ON A.REST_ID = B.REST_ID
    Type
    Description

    두 테이블을 조인할 조건을 설정합니다.

  • Name
    WHERE A.ADDRESS LIKE '서울%'
    Type
    Description

    주소가 서울인 데이터를 조회합니다.

  • Name
    GROUP BY A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS
    Type
    Description

    AVG 함수를 사용하기 위해 GROUP BY절을 사용합니다.

  • Name
    ORDER BY AVG(B.REVIEW_SCORE) DESC, A.FAVORITES DESC
    Type
    Description

    평균값으로 내림차순, 즐겨찾기 순으로 내림차순 정렬합니다.

서울에 위치한 식당 목록 출력하기

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 A.REST_ID,
          A.REST_NAME,
          A.FOOD_TYPE,
          A.FAVORITES,
          A.ADDRESS
 ORDER BY AVG(B.REVIEW_SCORE) DESC,
          A.FAVORITES DESC