본문 바로가기
코딩테스트/programming_SQL

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

by prometedor 2023. 11. 17.

ROUND, AVG, GROUP BY, JOIN, LIKE 이용하기

 

https://school.programmers.co.kr/learn/courses/30/lessons/131118

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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;

 

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 1
ORDER BY 6 DESC, 4 DESC;

 

 

문제 사항 1 : 모든 것을 제대로 작성했다고 생각했지만 정답 처리가 되지 않았다. 문제는 주소에 대해 '서울' 인지 확인하는 조건을 빠뜨렸다는 것이었다.

문제 사항 2: '서울' 인지 확인하는 조건을 추가하여도 정답 처리가 되지 않았다. 또 다른 문제는 AVG(b.REVIEW_SCORE) 를 하기 위해서는 어떤 것을 기준으로 REVIEW_SCORE 의 평균을 구할 것인지를 처리해줘야 한다는 것이다.

 

문제 사항 1 해결 : 주소에 대해 '서울' 의 음식점인지를 확인하는 조건을 추가하였다.

문제 사항 2 해결 : 기준점을 REST_ID 로 잡아서 REST_ID 로 GROUP BY 를 해주어 정답 처리를 받았다.

 

깨달은 바 : 항상 문제를 제대로 꼼꼼히 읽자고 다짐하지만, 잘 되지 않는다. 다시 한 번 문제를 제대로 읽자고 다짐한다. 또한, GROUP BY 를 이용하여 필요한 그룹화를 잘 하도록 하자.