반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131118
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(R.AVG_SCORE, 2) AS SCORE
FROM REST_INFO I
JOIN(
SELECT REST_ID, AVG(REVIEW_SCORE) AS AVG_SCORE
FROM REST_REVIEW
GROUP BY REST_ID) AS R
ON R.REST_ID = I.REST_ID
WHERE I.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, I.FAVORITES DESC
JOIN문 안에 서브쿼리를 사용하여 문제를 해결하였습니다.
서브쿼리로 REST_REVIEW 테이블에서 REST_ID를 기준으로 그룹화를 하고 REVIEW_SCORE의 평균점수(AVG_SCORE)을 구한다음 REST_ID, AVG_SCORE 을 추출한 테이블 R과 REST_INFO 테이블 I 를 JOIN합니다.
서울에 위치한 식당들의 정보를 추출해야 하기 때문에 WHERE문에서 REST_INFO 테이블의 ADDRESS '서울'로 시작하는 데이터를 추출합니다.
- LIKE 연산자에서 '%서울%' 키워드를 사용하면 오답처리가 되었습니다.
- 이유를 찾아보았는데 예를 들어 '경기도 광명시 서울공원로~~' 와같은 데이터가 존재한다면 이 또한 서울로 인식하기 때문에 오답처리가 된것 같습니다.
평균점수는 소수점 세 번째 자리에서 반올림을 해야하기 때문에 ROUND()함수를 사용하여 반올림을 적용하였습니다.
ORDER BY에서 평균점수(SCORE)와 즐겨찾기수(FAVORITES)를 내림차순 정렬하여 문제를 해결하였습니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 취소되지 않은 진료 예약 조회하기 MySQL (0) | 2022.12.08 |
---|---|
[코딩테스트] 프로그래머스 년, 월, 성별 별 상품 구매 회원 수 구하기 MySQL (0) | 2022.12.08 |
[코딩테스트] 프로그래머스 우유와 요거트가 담긴 장바구니 MySQL (0) | 2022.12.07 |
[코딩테스트] 프로그래머스 식품분류별 가장 비싼 식품의 정보 조회하기 MySQL (1) | 2022.12.06 |
[코딩테스트] 프로그래머스 5월 식품들의 총매출 조회하기 (0) | 2022.12.06 |