👇 서울에 위치한 식당 목록 출력하기
코딩테스트 연습 - 서울에 위치한 식당 목록 출력하기
알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려
school.programmers.co.kr
🔓 문제 설명
USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요.
결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고,
댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.
예시 문제 데이터
[REST_INFO]
| REST_ID | REST_NAME | ADDRESS | FAVORITES |
| 00035 | 삼촌식당 | 서울특별시 강서구... | 80 |
[REST_REVIEW]
| REVIEW_ID | REST_ID | REVIEW_SCORE |
| R000000068 | 00035 | 5 |
| R000000069 | 00035 | 4 |
⚡SQL Query
SELECT I.REST_ID,
I.REST_NAME,
I.FOOD_TYPE,
I.FAVORITES,
I.ADDRESS,
ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO I
JOIN REST_REVIEW R ON I.REST_ID = R.REST_ID
WHERE I.ADDRESS LIKE '서울%'
GROUP BY I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS
ORDER BY SCORE DESC, I.FAVORITES DESC;
🔎 풀이 설명
1. 조인 및 필터링: 식당 ID 기준 조인, 주소가 서울인 범위 필터링
2. 그룹화 및 집계: 식당별 평균 점수를 구하기 위해 GROUP BY를 사용, AVG() + ROUND()를 사용하여 문제 조건에 맞췄습니다.
3. 정렬
💡인사이트
1. 조인 전 필터링
- 서울에 위치한 식당을 먼저 거르고 리뷰를 조인하는 것이 효율적입니다. REST_INFO의 주소 컬럼에 인덱스가 있다면 스캔 범위를 대폭 줄일 수 있습니다.
2. Group By 부하와 인덱스
- GROUP BY는 내부적으로 Sort 또는 Hash 연산을 유발해서 CPU 자원을 많이 소모합니다.
'🗄️ DB_이야기 > # ⚡SQL' 카테고리의 다른 글
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 오프라인/온라인 판매 데이터 통합하기(SELECT) (0) | 2026.04.14 |
|---|---|
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 재구매가 일어난 상품과 회원 리스트 구하기(SELECT) (0) | 2026.04.14 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 강원도에 위치한 생산공장 목록 출력하기(SELECT) (0) | 2026.04.13 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 조건에 부합하는 중고거래 댓글 조회하기(SELECT) (0) | 2026.04.13 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 3월에 태어난 여성 회원 목록 출력하기(SELECT) (1) | 2026.04.13 |