💫 문제
💫 CODE
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 SCORE DESC, a.FAVORITES DESC;
SELECT a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS, ROUND(b.SCORE, 2) AS SCORE
FROM REST_INFO a
JOIN (
SELECT REST_ID, AVG(REVIEW_SCORE) AS SCORE
FROM REST_REVIEW
GROUP BY REST_ID)
b ON a.REST_ID = b.REST_ID
WHERE ADDRESS LIKE '서울%'
GROUP BY a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS
ORDER BY SCORE DESC, FAVORITES DESC;
💫 풀이 조건
1. 서울에 위치한 식당들
2. 식당 ID(REST_ID), 식당 이름(REST_NAME), 음식 종류(FOOD_TYPE), 즐겨찾기수(FAVORITES), 주소(ADDRESS), 리뷰 평균 점수 조회
3. 리뷰 평균점수는 소수점 세 번째 자리에서 반올림
4. 평균점수를 기준으로 내림차순 정렬
5. 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬
💫 풀이
1. SELECT a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS, ROUND(AVG(b.REVIEW_SCORE), 2) AS SCORE
- 식당 ID(REST_ID), 식당 이름(REST_NAME), 음식 종류(FOOD_TYPE), 즐겨찾기수(FAVORITES), 주소(ADDRESS), 리뷰 평균 점수 조회
- ROUND(컬럼, 숫자)를 이용하여 소수점 세 번째 자리에서 반올림
- AVG() 함수를 이용하여 평균 점수 계산
2. JOIN REST_REVIEW b ON a.REST_ID = b.REST_ID
- JOIN을 이용하여 REST_REVIEW 테이블 조인
- 공통 컬럼 지정
3. WHERE a.ADDRESS LIKE '서울%'
- LIKE를 이용하여 서울로 시작하는 주소 찾기
- 여기서 계속 틀렸는데 문제의 주소가 서울특별시도 있고 서울시도 있어서 서울로 해야 정답 처리 !
4. GROUP BY a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS
- GROUP BY를 이용하여 그룹 지정
5. ORDER BY SCORE DESC, a.FAVORITES DESC
- 평균점수(SCORE)를 기준으로 내림차순 정렬, 평균점수가 같다면 즐겨찾기수(FAVORITES)를 기준으로 내림차순 정렬