반응형
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번째 자리까지 표기해준다.
그 다음 정렬 해주면 간단하게 해결된다.
반응형
'SQL > MY SQL 문제 풀이(프로그래머스)' 카테고리의 다른 글
[MYSQL] PROGRAMMERS_저자 별 카테고리 별 매출액 집계하기 (0) | 2024.02.23 |
---|---|
[MYSQL] PROGRAMMERS_년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.02.23 |
[MYSQL] PROGRAMMERS_취소되지 않은 진료 예약 조회하기 (0) | 2024.02.23 |
[MYSQL] PROGRAMMERS_ 5월 식품들의 총매출 조회하기 (0) | 2024.02.23 |
[MYSQL] PROGRAMMERS_식품분류별 가장 비싼 식품의 정보 조회하기 (1) | 2024.02.23 |