SQL/MY SQL 문제 풀이(프로그래머스)

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

SQL공부 2024. 2. 23. 20:30
반응형

SELECT i.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE),2) as SCORE
FROM REST_INFO as i, REST_REVIEW as r
WHERE i.REST_ID = r.REST_ID
AND ADDRESS like "서울%"
GROUP BY 1
ORDER BY 6 desc, 4 desc

문제

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

 

조건이 크게 어렵지 않은 문제이다. 먼저  REST_INFO와 REST_REVIEW를 유니크성을 가지며 공통으로 지닌 REST_ID 기준으로 조인해 준다. 이후 서울에 위치한 식당을 like % 구문을 통해 필터링 해준다. 전체 데이터를 보면 서울특별시, 서울시 두가지 데이터가 있기에 서울만 기준으로 해서 필터링 해주어야 한다.

 

 다음으로는 리뷰 평균 점수를 조회 해야하는데, 리뷰점수는 REVIEW_SCORE 컬럼으로 해당 값을 AVG 한다. 이후 반올림을 해야하는데 반올림의 경우 ROUND 함수를 사용한다 (올림은 CEIL, 내림은 FLOOR) 세번쨰 자리에서 반올림이므로 2번째 자리까지 표기해준다.

 

 그 다음 정렬 해주면 간단하게 해결된다.

반응형