[프로그래머스/SQL](Lv.4)서울에 위치한 식당 목록 출력하기 (MySQL)

SQL

목록 보기
5/8
post-thumbnail

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

조건 )

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

까탈시럽구만..

풀이 )

  1. from : 먼저 식당 ID 가 기본키, 두 테이블의 교집합을 구하기위해 inner join.
  2. where : 조건이 '서울' 이므로 '서울'을 포함한 단어를 찾기 위해 ADDRESS에서 Like('서울%') 조건을 달아줌.
    • 이때 REST_INFO 데이터 먼저 확인해보기.
  3. select : 써줄 때 리뷰 평균 점수를 써줘야 하니 AVG() 집계함수 써주고 이름을 SCORE 로 지정. 또 평균점수 소수점 세번째 자리 반올림이니까 ROUND(컬럼,2) 써줌.
    ROUND(col, 0)이면 소수 첫째자리 반올림임.
  4. group by : 식당의 리뷰 평균 점수니까 REST_NAME 으로 그룹화.
  5. having : 은 굳이 쓸 필요 없으니 패쓰
  6. order by : 평균점수 desc, 즐겨찾기 desc
SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, 
        ROUND(AVG(R.REVIEW_SCORE), 2) SCORE
FROM REST_INFO I JOIN REST_REVIEW R ON I.REST_ID = R.REST_ID
WHERE I.ADDRESS LIKE ('서울%')
GROUP BY I.REST_NAME
ORDER BY SCORE  DESC, I.FAVORITES DESC
profile
두둥탁 뉴비등장

0개의 댓글