[SQL 고득점 Kit / SELECT ] Level 4 - 서울에 위치한 식당 목록 출력하기

SlowAnd·2024년 2월 11일

[Level 4] - 서울에 위치한 식당 목록 출력하기

문제

정답

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

풀이

1. SELECT

SELECT 
    I.REST_ID, 
    I.REST_NAME, 
    I.FOOD_TYPE, 
    I.FAVORITES, 
    I.ADDRESS, 
    ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE
  • I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS: 식당의 ID, 이름, 음식 종류, 즐겨찾기 수, 주소를 선택하여 조회합니다.
  • ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE: 리뷰 점수의 평균을 계산한 뒤, 소수점 두 번째 자리까지 반올림하여 SCORE라는 별칭으로 표시합니다. 이는 각 식당에 대한 리뷰 점수의 평균값을 나타냅니다.

2. FROM & JOIN

FROM 
    REST_INFO I
JOIN 
    REST_REVIEW R ON I.REST_ID = R.REST_ID
  • FROM REST_INFO I: 조회를 시작할 기본 테이블로 REST_INFO를 사용합니다. 여기서 I는 이 테이블의 별칭입니다.
  • JOIN REST_REVIEW R ON I.REST_ID = R.REST_ID:
    REST_INFO 테이블과 REST_REVIEW 테이블을 REST_ID를 기준으로 조인합니다. 이 조인은 각 식당의 리뷰 정보를 식당 정보와 결합합니다.

3. WHERE

WHERE 
    I.ADDRESS LIKE '서울%'
  • I.ADDRESS LIKE '서울%': 주소가 '서울'로 시작하는 식당만을 필터링하여 조회합니다. %는 와일드카드로, '서울'로 시작하는 어떤 문자열과도 일치한다는 것을 의미합니다.

4. GROUP BY

GROUP BY 
    I.REST_ID
  • GROUP BY I.REST_ID: REST_ID 별로 그룹화하여, 각 식당에 대한 리뷰 점수의 평균을 계산합니다. 이는 각 식당이 고유하게 식별되도록 보장합니다.

5. ORDER BY

ORDER BY 
    SCORE DESC, I.FAVORITES DESC;
  • ORDER BY SCORE DESC, I.FAVORITES DESC: 먼저 SCORE를 기준으로 내림차순 정렬하여 평균 점수가 높은 식당부터 표시합니다. 평균 점수가 같은 경우, FAVORITES (즐겨찾기 수)를 기준으로 내림차순 정렬하여 즐겨찾기 수가 많은 식당을 더 상위에 위치시킵니다.

0개의 댓글