[SQL] 프로그래머스 고득점 SQL kit (서울에 위치한 식당 목록 출력하기)

2023. 2. 18. 18:04SQL

< 한줄 요약 >

JOIN문을 이용해서 두 테이블을 연결시킵니다.


<문제>

 

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

 

 

< 요구사항 정리 >

 

-- 칼럼

1. 식당 ID              --> REST_INFO

2. 식당 이름          --> REST_INFO

3. 음식 종류          --> REST_INFO

4. 즐겨찾기수        --> REST_INFO
5. 주소                  --> REST_INFO

6. 리뷰 평균 점수   --> REST_REVIEW    (이 부분 때문에 JOIN문이 필요합니다.)

 

-- 제한 조건

1. 서울에 위치  --> WHERE 문 안에  LIKE문으로 조건으로 넣어주기

2. 리뷰 평균 점수는 소수점 세자리에서 반올림 --> SELECT문에서 ROUND, AVG 사용하고, GROUP BY로 같은 REST_ID들 묶어주기

3. 평균점수 내림차순, 같다면 즐겨찾기 수 내림차순 정렬하기 --> ORDER BY _____ DESC 이용하기

 

 

< 정답 코드 >

 

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
ORDER BY SCORE DESC, FAVORITES DESC