1.문제
https://school.programmers.co.kr/learn/courses/30/lessons/131118
2.정답
SELECT RI.REST_ID, RI.REST_NAME, RI.FOOD_TYPE, RI.FAVORITES, RI.ADDRESS, RR.SCORE
FROM REST_INFO RI
INNER JOIN (
SELECT REST_ID,ROUND(AVG(REVIEW_SCORE), 2) AS SCORE
FROM REST_REVIEW
GROUP BY REST_ID) RR
ON RI.REST_ID = RR.REST_ID
WHERE RI.ADDRESS LIKE '서울%'
ORDER BY RR.SCORE DESC, RI.FAVORITES DESC
3.내가 정답을 못 적은 이유
- 문제 전략을 제대로 세우지 못했다. 조인 테이블의 범위를 생각치 못했다.
문제에서 제시된 조건은 크게 세 가지다.
①식당은 서울에 위치한다.
②리뷰 평균점수는 소수점 셋째자리에서 반올림한다.
③평균점수를 기준으로 내림차순으로 정렬, 즐겨 찾기 수를 기준으로 내림차순 정렬
이런 조건을 충족시키기 위해선 조인을 해야한다. 조인을 해야한다는 생각을 하는 건 어렵지 않았지만, 문제 요구에 맞는 정확한 쿼리를 작성하지 못했다. 세 조건중에 ②조건에 맞춰 조인 대상을 서브쿼리로 작성하면 문제에서 요구하는 테이블을 만드는데에 적합해진다. 이 조건을 만족시켜 쿼리문을 작성한다면 나머지 ①,③ 조건의 쿼리문을 짜는 건 시간문제다. '조인 테이블을 어떻게 문제에 적합한 형태로 만들것인가'가 이 문제에 핵심이라고 볼 수 있다.
'DB > SQL오답노트' 카테고리의 다른 글
[SQL/SQL오답노트]LV4.우유와 요거트가 담긴 장바구니 (0) | 2023.04.13 |
---|---|
[SQL/SQL오답노트]LV3.대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2023.04.12 |
[SQL/SQL오답노트]LV3.조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.04.05 |
[SQL/SQL오답노트]LV4.그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2023.04.05 |
[SQL오답노트/프로그래머스]LV2.조건에 부합하는 중고거래 상태 조회하기 (0) | 2023.03.10 |