본문 바로가기

CS/SQL Problem

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

 

프로그래머스

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

programmers.co.kr

 

핵심

식당에 대한 리뷰 정보를 다루기 때문에 식당 테이블과 리뷰 테이블을 합친다.

JOIN : 두 테이블을 붙인다. (두 테이블의 속성을 모두 합친 테이블이 된다.)
USING
: 해당 속성이 같은 행끼리 붙인다.

SELECT REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS
FROM REST_INFO AS INFO
LEFT JOIN REST_REVIEW AS RV 
USING (REST_ID)

 

가게 별로 리뷰의 평균을 구한다. 점수가 없다면 제외하고 리뷰 평균점수는 소수점 세 번째 자리에서 반올림한다.
GROUP BY : 속성이 같은 행을 묶음
HAVING
: GROUP BY 후의 조건
AVG
: 평균

ROUND : 반올림

SELECT ... ROUND(AVG(RV.REVIEW_SCORE), 2) AS SCORE
...
GROUP BY REST_ID
HAVING SCORE IS NOT NULL

 

Code

SELECT REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(RV.REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO AS INFO
LEFT JOIN REST_REVIEW AS RV
USING (REST_ID)
WHERE AND ADDRESS LIKE '서울%'
GROUP BY REST_ID
HAVING SCORE IS NOT NULL
ORDER BY SCORE DESC, INFO.FAVORITES DESC;

 

728x90
반응형