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

쥬쥬스·2023년 8월 22일
0

SQL

목록 보기
40/67
post-thumbnail

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

📝 조건

  • 서울에 위치한 식당
  • 식당ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수 조회
  • 리뷰 평균 점수는 소수점 둘째자리까지만
  • 평균점수 기준으로 내림차순, 즐겨찾기수 기준으로 내림차순

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
  1. 서울에 위치한 식당
    • 위치 정보는 REST_INFO 테이블에 존재하므로 WHERE절에서 조건을 설정
	WHERE i.address like '서울%'
  1. 식당ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수 조회
    • 리뷰 평균 점수는 REST_REVIEW 테이블에 존재하므로 두개의 테이블을 조인해주어야함
    • 각각의 테이블을 명시
	SELECT i.rest_id, i.rest_name, i.food_type, i.favorites,
    		i.address, r.rs as score
  1. 리뷰 평균 점수는 소수점 둘째자리까지만
    • 평균 점수는 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
  1. 평균점수 기준으로 내림차순, 즐겨찾기수 기준으로 내림차순
    • 각각의 조건에 조건을 적어줘야함 (ASC, DESC)
	ORDER BY r.rs desc, i.favorites desc

평균 점수가 없는 경우는 출력하지 않는다는 조건이 없는데 그 조건을 만족해야 정답으로 처리된다. 하... 어디에도 없는데요!
그리고 서울에 위치한 곳을 조회하는 것이므로 서울이 앞에 있으면서 뒤에 주소가 오는 경우만 출력해주어야 한다. 앞에까지 % 기호로 서울을 적어주면 다른 곳인데 '서울'이라는 단어가 들어간 곳을 출력할 수도 있기 때문에!!

profile
느려도... 꾸준히.....🐌

0개의 댓글