250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 문풀
- 그로스해킹
- leetcode문풀
- SQL고득점KIT
- 활성사용자수
- 서브쿼리
- 데벨챌
- 데이터리안넥스트레벨챌린지
- levle1
- 프로그래머스문풀
- leetcode
- 오블완
- 파이썬문풀
- join
- sql50
- sql문풀
- 티스토리챌린지
- 프로그래머스
- 위키독스
- 데이터리안
- 윈도우함수
- 코테준비
- 파이썬
- 약수구하기
- SQL테스트
- mysql
- SQL
- with절
- 데이터리안실전반
- 셀프조인
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[프로그래머스: SQL 고득점 kit] 서울 매장의 리뷰 평균 구하기 본문
728x90
출처: [프로그래머스] : 서울에 위치한 식당 목록 출력하기
문제: 매장정보와 리뷰정보 테이블을 활용하여 매장정보와 리뷰 평균 출력
1. INNER JOIN 활용하기
1) 매장 정보 테이블과 리뷰 테이블을 INNER JOIN(리뷰가 있는 것만 조회 되도록)
2) GROUP BY로 매장별 정보와 리뷰 평점을 집계
3) where절에서 LIKE로 서울인 것을 필터링
*주의* 샘플 데이터에 '서울특별시'로 되어있어서 그대로 사용하였는데 '서울시'로 입력된 것도 있어 정답처리x
샘플만 믿지 말고 실제로 조회해보는 단계가 필요!
SELECT ri.REST_ID,
ri.REST_NAME,
ri.FOOD_TYPE,
ri.FAVORITES AS FAVORITE,
ri.ADDRESS,
ROUND(AVG(REVIEW_SCORE),2) AS SCORE
FROM REST_INFO AS ri
INNER JOIN REST_REVIEW AS rr USING(REST_ID)
WHERE ri.ADDRESS LIKE '서울%'
GROUP BY REST_ID
ORDER BY SCORE DESC, FAVORITE DESC
2. 서브쿼리 활용하기
1) 서브쿼리로 매장리뷰 테이블에서 매장명과 평점을 추출
2) 서브쿼리를 매장정보 테이블과 JOIN
3) 동일하게 WHERE절에서 서울인 것만 필터링
SELECT ri.REST_ID,
ri.REST_NAME,
ri.FOOD_TYPE,
ri.FAVORITES,
ri.ADDRESS,
rr.SCORE
FROM REST_INFO AS ri
JOIN
(SELECT REST_ID, ROUND(AVG(REVIEW_SCORE),2) AS SCORE
FROM REST_REVIEW
GROUP BY REST_ID) rr
USING(REST_ID)
WHERE ri.ADDRESS LIKE '서울%'
ORDER BY rr.SCORE DESC, ri.FAVORITES DESC;
3. INNER JOIN vs JOIN + 서브쿼리 차이점
구분 | INNER JOIN | JOIN + 서브쿼리 |
평균 점수 계산 방식 | AVG(REVIEW_SCORE) 직접 계산 | 서브쿼리에서 미리 계산 |
성능 비교 | 장점) 조인과 평균 계산을 한 번에 수행하여 빠를 수 있음. 단점) REST_REVIEW 테이블이 크다면, 조인 후 AVG(REVIEW_SCORE)를 계산하는 과정이 부담될 수 있음. |
장점) REST_REVIEW 테이블이 크다면 JOIN 시 불필요한 중간 데이터 처리를 줄일 수 있어 성능이 더 좋을 수도 있음. |
728x90
'SQL > SQL문풀' 카테고리의 다른 글
[Leetcode:SQL] 부서별로 top3 급여 조회하기 (0) | 2025.02.08 |
---|---|
[해커랭크: SQL] SQL로 피봇하기 (0) | 2025.02.07 |
[MY SQL] 영화를 가장 많이 본 사람과 평점이 가장 높은 영화 찾기 (0) | 2025.02.05 |
[MY SQL] id의 순서 변경하기 (0) | 2025.02.04 |
[MY SQL] 카테고리별 집계하기 (0) | 2025.02.03 |