문제는 프로그래머스 홈페이지에서 더 자세히 확인하실 수 있습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/131118
문제
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요.
이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
풀이
SELECT info.REST_ID, info.REST_NAME, info.FOOD_TYPE, info.FAVORITES, info.ADDRESS, round(AVG(review.REVIEW_SCORE), 2) as SCORE
FROM REST_INFO as info
INNER JOIN REST_REVIEW as review ON info.REST_ID = review.REST_ID
GROUP BY info.REST_ID
HAVING info.ADDRESS LIKE '서울%'
ORDER BY SCORE desc, info.FAVORITES desc
- 두 개의 데이터를 JOIN 하는 것으로 기본 데이터를 만든다.
- 리뷰 평균 점수를 집계하기 위해서, GROUP BY를 해야한다. (식당 아이디 기준)
- 평균 점수를 위해 AVG() 를 사용하며, 3번째 자리에서 소수점 반올림을 위해 ROUND( ,2) 해준다.
- 그룹 결과 중, '서울'에 위치한 식당을 찾기 위해 HAVING 절을 사용하며, LIKE 로 찾는 텍스트를 지정해준다.
- 문제에서 요구한대로 내림차순 결과물을 정리한다.
결과
728x90
'SQL > SQL test' 카테고리의 다른 글
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2023.10.09 |
---|---|
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.10.07 |
[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.10.06 |
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (0) | 2023.10.04 |
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2023.10.04 |