문제
REST_INFO
와 REST_REVIEW
테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
📝 조건
sql 코드
SELECT i.rest_id, i.rest_name, i.food_type, i.favorites, i.address, r.rs as score
FROM rest_info i RIGHT JOIN
(select rest_id, round(avg(review_score),2) as rs
from rest_review
group by rest_id) r on i.rest_id = r.rest_id
WHERE i.address like '서울%'
ORDER BY r.rs desc, i.favorites desc
REST_INFO
테이블에 존재하므로 WHERE
절에서 조건을 설정 WHERE i.address like '서울%'
REST_REVIEW
테이블에 존재하므로 두개의 테이블을 조인해주어야함 SELECT i.rest_id, i.rest_name, i.food_type, i.favorites,
i.address, r.rs as score
REST_REVIEW
테이블에서 구해줌 FROM rest_info i RIGHT JOIN
(select rest_id, round(avg(review_score),2) as rs
from rest_review
group by rest_id) r on i.rest_id = r.rest_id
ORDER BY r.rs desc, i.favorites desc
평균 점수가 없는 경우는 출력하지 않는다는 조건이 없는데 그 조건을 만족해야 정답으로 처리된다. 하... 어디에도 없는데요!
그리고 서울에 위치한 곳을 조회하는 것이므로 서울이 앞에 있으면서 뒤에 주소가 오는 경우만 출력해주어야 한다. 앞에까지 % 기호로 서울을 적어주면 다른 곳인데 '서울'이라는 단어가 들어간 곳을 출력할 수도 있기 때문에!!