sql 두개 테이블 검색

박진은·2023년 3월 7일
0

코테

목록 보기
9/44

두개 테이블 검색

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

문제는 위에 나와있는 링크와 같으니 참고 바란다.

REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.

가 정답은 다음과 같다.

SELECT REST_INFO.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS,
ROUND(AVG(REVIEW_SCORE),2) AS SCORE
FROM REST_INFO, REST_REVIEW
WHERE REST_INFO.REST_ID = REST_REVIEW.REST_ID AND REST_INFO.ADDRESS LIKE "서울%"
GROUP BY REST_INFO.REST_ID
ORDER BY SCORE DESC, FAVORITES DESC

ROUND(AVG(REVIEW_SCORE),2) AS SCORE 를 보면 avg 함수를 사용해서 그룹함수를 사용했고 round 함수를 사용해서 소수점 3째 자리에서 반올리해서 나타내게 하고 as를 사용해서 출력하는 필드 이름을 score로 바꿨다.

FROM REST_INFO, REST_REVIEW 두개 테이블에서 한번에 검색하기 위해서 사용했다. 그리고 조인 조건을 걸기 위해서 WHERE REST_INFO.REST_ID = REST_REVIEW.REST_ID 을 사용했다 이후 REST_INFO.ADDRESS LIKE "서울%" 패턴 인식을 사용하기 위해서 사용했다. 근데 여기서 필자는 %서울%을 사용해서 서울이 들어간 모든 패턴을 인식하려고 했는데 오류가 났다... 이건 분명 문제 잘못이다.
GROUP BY REST_INFO.REST_ID 그룹 함수를 사용하기 위해서 rest_id를 기준으로 묶어서 avg 함수에 적용이 될 수 있게 만들었다. 이후 ORDER BY SCORE DESC, FAVORITES DESC 필자는 몰랐던 부분인데 이렇게 정렬 조건에 두개의 필드를 명시하면 첫번째 필드를 사용해서 정렬을 수행한 후 같은 것에 대해서 두번째 필드러 정렬하는 것이 적용되는거 같다.

profile
코딩

0개의 댓글